A
«
Micro Processadores Redes Neurais Fivewin
Última Parte
Parte 2 Parte 4
h m «yJKEi? v J; u
txks.im e m.iiv,» ivjMi.uI.i il.i .txkVim s> vleni > lue
ONDE
e você costuma armazenar seus textos em um editor de textos e depois
não consegue lembrar do nome dos arquivos...
Se você necessita trabalhar com informações estruturadas
em campos e com informações desestruturadas ao mesmo tempo...
Então você precisa do banco de dados
textual e hipertexto
Que tal um software que, além de buscar informações por
qualquer palavra ou frase do texto, permite que você organize
as Home Pages e as suas mensagens do correio eletrônico em
bases de dados para posterior recuperação?
#•
Nas versões Monousuário, Rede, Electronic Publisher
e Web Publisher.
Consulte-nos:
Tel/Fax: (021)571-5372 F-mail: snMlasitfprolink.com.br
http://www.egeria.com.br
PROGRAMA EM C PARA
CRIPTOGRAFIA DE ARQUIVOS
PROTEJA SEUS DIREITOS AUTORAIS
Marco Antônio de Araújo Paiva
Ruhen Nascimento da Rocha 4
PROGRAMA EM PASCAL PARA
DETECTAR E REMOVER O
• VÍRUS LEANDRO AND KELL Y
IMPRESSÃO EM DELPHI
Daniel Ornar Basconcello Filho 33
ANIMAÇÃO EM ASCII COM O CLIPPER
9 9 9 V 9
Dorival Afonso Cardozo
8 Carlos Emi/io Padilla Severo
FUNÇÃO PLA Y PARA ÇA-ÇUPPER
Marcos Antônio Gamheta 12
DES VENDA ND A NDO A
TECNOLOGIA DO PENTIUM MMX
Andretti Barros
16
CAÍ NO MUNDO
Marcelo Zóchio
9
18
AL TERANDO MENU DE CONTEXTO
DO WINDOWS 95 COM O V.B.
Disnei Rocha Bernardo
21
FiveWin e a Migração de Aplicações
Clliper para o Windows (Parte 4 de 5)
Vilian F. Arraes 40
CaUMR Dortncio
Microprocessadores e Placas de CPU
Laéreio Vasconcelos 36
• RELÓGIO DIGITAL EM CLIPPER
Marcus Fúlvio 23
REDES NE URAIS AR TIFICIAIS (Pane 2)
Carlos A. Thompson PhD . ‘ 25
Diretor: Marcelo Zóchio
Editor: Julio M. F. Santos
Redação: Mareia Corrêa
Arte: Marcelo Zóchio e Julio M. F. Santos
Colaboradores: Carlos A. Thompson. Phd ,
Rubem Nascimento da Rocha, Lacrcio
Vasconcelos e Vilian F. Arraes, Dorival A.
Cardozo, Marcos A.Gambeta, Andretti Barros,
Disnei R. Bernardo. Marcus Fúlvio, Marco
Antônio de A. Paiva, Daniel Ornar B. Filho.
Carlos Emilio P. Severo.
Distribuição: Fernando Chinaglia Dist. Ltda.
Tcl.: (021) 575-7725 / 575-7766
Assinaturas: 1 ano - R$60,00 / 2 anos -
R$ 120,00
Venda de Assinaturas
Rio de Janeiro: Alessandre Rodrigues Nogueira
Tel (021) 532-0770 cod.4016779
TEL/FAX: (021) 261-7841 ,
2 a a 6 a de ( 09 às 17 horas)
. Os artigos publicados são de responsabilidade única 6
exclusiva dos autores. Todos os direitos do conteúdo da
revista cstào reservados e qualquer reprodução, com
finalidade comercial ou não. só poderá ser feita mediante
autorização prévia. Transcrições parciais de textos para
comentários ou referências podem ser feitas, desde que sejam
mencionados os dados bibliográficos de Micro Sistemas.
REVISTA MICRO SISTEMAS
Caixa Postal 18347
Rio de Janeiro - RJ - CEP 20722-970
«
Por: Rubem Nascimento da Rocha
Veja com Rubem Rocha, como
proteger seus aplicativos contra
a pirataria.
Um Recurso não Documentado Muito
0
Uríl para Proteção de Aplicações
Muitos desenvolvedores no Bra¬
sil inteiro têm a constante preocu¬
pação em, além de fornecer aplica¬
ções seguras, eficientes e rápidas a
seus clientes, instaurar uma manei¬
ra de que seu produto intelectual não
seja burlado, ou seja, tenha o seu
software copiado ilegalmente. Até
onde me consta, se um programador
desenvolve um software e, por um
acaso do destino, ele for pirateado
por um energúmeno que não tem o
que fazer da vida, você pode mover
uma ação contra este cidadão e fazê-
lo pagar a você uma indenização re¬
ferente a duas mil vezes o valor do
software. No intuito de que as apli¬
cações por nós desenvolvidas não
caiam na rede da pirataria, muitos
programadores não têm medido es¬
forços para criar ferramentas para
dificultar, e até impedir, que o retor¬
no de seu investimento de semanas,
meses ou anos seja escoado pelo
ralo. Uma ferramenta de que tenho
ouvido muito é o HandProt, desen¬
volvido pela Squadra, voltado para
desenvolvedores Delphi.
Entretanto, usando da boa e velha
criatividade do brasileiro, você mes¬
mo pode ir à luta e desenvolver o seu
próprio método para instalação e
proteção de suas aplicações, seja em
qual linguagem você escolher. É o
que proponho neste artigo, no qual
ilustro uma técnica não documenta-
da no MS-DOS (que também funci¬
ona no Windows 95 e Windows NT)
para identificação de discos rígidos
e flexíveis.
Identificação de Discos Flexíveis
e Rígidos
No versão MS-DOS 4.0 e posteri¬
ores, existe uma função não docu¬
mentada da interrupção 21 h, serviços
do MS-DOS, que permite, além de sa¬
bermos o número de série do volume
do disco, seja ele rígido ou flexível,
sabermos qual o sistema de arquivos
ou o tipo de dispositivo em questão.
Ela também nos permite ajustar o
número de série. Este serviço é ilus¬
trado a seguir:
4
/ Rmteja seus L>ireitos Autorais
Interrupção 21h * Função 69h
( Obtém/Ajusta o Número de Série )
Entrada: AH = 69h
AL = subfunção (00-obtém/01-ajusta)
BL = drive (0-default, 1-A:, 2-B:, etc.)
BH = nivel da informação (=0, sempre)
DS:DX = endereço do buffer onde serão
obtidas as informações
Saida: Se CF (Carry Flag) = 1, houve um erro e
o registrador AX terá o código do erro;
Se CF (Carry Flag) = 0, sucesso na operação.
Se o Carry Flag (CF) estiver lim¬
po (=0), a operação que foi
especificada na chamada da funçào no
registrador AL será completada com
sucesso, ou seja, se AL=0, os dados
pedidos serào enviados ao buffer
referenciado no endereço indicado
no par de registradores DS:DX; se
AL=I, os dados contidos no buffer
indicado no endereço DS:DX foram
gravados no disco.
Para o MS-DOS, Windows 95 e
Windows NT, o campo nivel de infor¬
mação é sempre 0. Para o OS/2, exis¬
tem outros niveis. Se o disco nào pos¬
suir nome de volume, será retornado
o nome “NO NAME" alinhado à es¬
querda com espaços em branco. Os
valores que poderào ser retornados na
posição llh do buffer de dados sào
os seguintes:
Na listagem I, SERIAL.C, temos
uma funçào escrita em Turbo C, para
uso em Clipper 5.x, para uso identi¬
ficar números de série de discos rí¬
gidos e flexíveis em aplicativos es¬
critos em linguagem Clipper. Na
listagem 2, SERIAL.PRG, um exem-
pio bem simples de chamada da fun¬
çào em C em um programa CA-
Clipper 5.x.
Note bem que as aplicações des¬
ta funçào podem ser as mais varia¬
das possíveis, tais como: identifi-
caçào de discos de instalação para
impossibilitar o uso caso os dis¬
cos sejam copiados; permitir que
uma aplicaçào rode somente no
micro em que foi instalado, a par¬
tir do momento e que se grava na
própria aplicaçào, de forma
criptografada e/ou compactada, as
informações particulares do disco
rígido, etc.
Considerações Finais
Com base no que foi exposto
neste artigo, concluo que cada
desenvolvedor ou equipe de
desenvolvedores adotará uma fi¬
losofia e métodos próprios ou
nào para implementar proteçào
contra cópias ilegais de seus pro¬
dutos. A informaçào contida nes¬
te artigo pode ser aplicada em
qualquer linguagem (Basic,
Assembly 8086/88, C, C + + ,
Clipper, Delphi, Borland Pascal
For Windows, Visual FoxPro,
etc.). Portanto, vai ao gosto do
freguês, ou seja, ou o programa¬
dor empenha-se em desenvolver
suas próprias técnicas de prote¬
çào, implicando em explorar mais
recursos a nivel de hardware e sis¬
tema operacional, ou faz uso de
ferramentas prontas para tal, tipo
InstalIShield e HandProt. Um
grande abraço a todos.
Até a próxima !
Rubem Nascimento da Rocha tem
21 anos e é Técnico em infor¬
mática Industrial formado pela
ETFAM-Escola Técnica Federal
do Amazonas. Endereços para
eventuais contatos:
Av. Efi génio Sales (V-8), Beco
Santo Antônio . 127 - Aleixo CEP
69060-05 7, Manaus-Amazonas
Fones: (092) 236-3819/642-1719
Fax: (092) 642-3075/642-1486
e-mail: rubemrocha@netium.com.br
Tipos de Sistemas de Arquivos Retornados pela Funçào 69 h, ÍNT 21 h
TIPO
SIGNIFICADO
FAT12
FAT de 12 bits (Discos Flexíveis)
FAT16
FAT de 16 bits (Discos Rígidos)
CDROM
Sistema de CD-ROM High-Sierra
( DOO 1
Sistema de CD-ROM ISO 9660
CDAUDIO
CD de Áudio
Formato do Buffer de Informações do Disco (INT 21 , Função 69h)
Deslocamento
Tamanho
Descrição
00h
WORD (2 BYTES)
Nivel da Informaçào
02h
DWORD (2 WORDS)
Número de Série do Disco
06h
11 BYTES
Nome do Volume
llh
8 BYTES
Se AL=0, Tipo do Sistema de Arquivos
/ Proteja seus Direitos Autorais
• *
===== Listagem 1 - NUMSERIE.C =====================
/* NUMSERIE.C - Função em C para Clipper para
identificação de discos rigidos e flexiveis
Compilar: TCC -C -ML - I<include_path>
NUMSERIE.C
CBS.: No include_path, colocar separados por ponto*e-virgula, os
diretórios INCLUDE do Clipper e do Turbo C, obrigatoriamente
nesta ordem. */
#include <dos.h>
#include <extend.h>
#define DIGITS "0123456789ABCDEF"
typedef unsigned int serialnumber[ 2 ];
typedef struct {
int infolevel;
serialnumber numero__de_serie;
char volume[ 11 ], filesystemf 8 ];
) serialinfo;
void getserial( serialnumber numero );
CLIPPER serial()
{
serialinfo info;
union REGS r;
struct SREGS s;
int drive;
drive = ! ISNUM( 1 ) ? _parni( 1 ) : 0 );
r.h.ah = 0x69;
r.h.al = 0x00;
r.h.bh = 0x00;
r.h.bl = drive;
r. x.dx = FP_OFF( ( void far * ) &info );
s. ds = FP_SEG( ( void far * ) &info );
info.infolevel * 0x00;
int86x( 0x21, &r &r, &s );
if ( !( r.x.f lags & 1 ) )
getserial( info.numero_de_serie );
else strcpy( retorno, "0000-0000" );
__retc ( retorno ) ;
}
/♦ Formata o retorno da função */
void getserial( serialnumber numero )
{
retomo ( 0 ]
retorno[ 1 ]
retorno[ 2 ]
retorno[ 3 ]
retorno[ 4
retorno[ 5 ]
retorno[ 6 ]
retomo I 7 )
retomo! 8 ]
}
= DIGITS[
= DIGITS!
= DIGITS!
= DIGITS!
] = ' •' ;
= DIGITS!
= DIGITS!
= DIGITS!
= DIGITS!
( numero!
( numero!
( numero!
( numero!
( numero!
! numero!
( numero!
( numero!
1 ] / 256 !
1 ] / 256 )
1 ] % 256 ;
1 ] % 256 )
0 1 / 256 ]
0 ] / 256 )
0 ] % 256 ]
0 ] % 256 )
» 4 ] ;
& OxOF ] ;
» 4 ] ;
& OxOF 1 ;
» 4 ] ;
& OxOF ] ;
» 4 ] ;
& OxOF ) ;
======Listagem 2 - SERIAL. PRG =====================
//Código em CA-Clipper 5.x exemplificando chamadas à função
//Serial (), escrita em Turbo C, para identificação de núme-
// ros de série em aplicações Clipper.
// Compilação: CLIPPER SERIAL /M /N /A /W
//Linkediçáo: BLINKER SERIAL, NUMSERIE LIB \TC\LIB\CL
//OBS.: A biblioteca CL.LIB é a biblioteca do Turf>o C que
// seque o modelo de memória dos programas Clipper.
r / Ela DEVE ser linkada, caso contrário a função não
//funcionará. Na linha de linkediçáo, forneça o ca-
// minha completo onde se encontra a biblioteca CL.
//A mesma sintaxe de linkediçáo pode ser usada.com o
RLINK.
FUNCTION MainO
QOUT( "Coloque um disco no Drive A: e tecle algo ..." )
INKEY( 0 )
QOUT( "Número de Série Disco A: ", Serial! 1 ) )
QOUT( "Número de Série Disco C: ", Serial! 3 ) )
RETURN NIL
VOCE FICARIA DE BOCA ABERTA SE SOUBESSE
DE QUANTO PRECISA PARA
PREENCHER ESTE ESPAÇO COM OANÚNCIO
DE SUA EMPRESA
9L
REVISTA MICRO SISTEMAS TEL: (021) 589-2088
6
VIDA DES
ACER LANÇA SERVIDOR VOLTADO PARA REDES DE
PEQUENO E MÉDIO PORTE
Servidor Altos Uno supre todas as necessidades desses seg¬
mentos com preços próximos ao de uma estaçào de trabalho.
A Acer do Brasil participou da Condex 97
apresentando ao mercado toda sua linha de pro¬
dutos, composta por servidores, micros PC
multimídia, desktops corporativos e notcbooks.
Além disso, durante a feira, a Acer do Brasil esteve
lançando um novo servidor voltado para o mercado low-
eixl. Denominado Acer Altos UNO , o novo equipamen¬
to foi desenvolvido especialmente para atender às ne¬
cessidades das empresas, oferecendo a melhor combi¬
nação de rendimento, confiabilidade e preço.
Destinado às redes de pequeno e médio porte,
Acer Altos UNO reúne características que visam facilitar o
dia-a-dia destas companhias. Com design compacto e no for¬
mato de mini-torre. o novo servidor é fácil de ser instalado,
possui alta capacidade de expansão, recursos para configura¬
ção e monitoramento do sistema, contando ainda com dis¬
positivos de alarmes, que detectam e informam o usuário
sobre possíveis problemas antes de parar.
Segundo Marco Zapparoli, gerente do depar¬
tamento de servidores da Acer do Brasil, o
AcerAltos UNO além de ser uma excelente so¬
lução para as pequenas e médias redes é tam¬
bém indicado como servidor departamental.
O preço é outro importante diferencial do novo
equipamento. “Por pouco mais do que custaria uma
estação de trabalho, adptada para operar como servi¬
dor de rede. o usuário pode contar com tixlos os
recursos de um verdadeiro servidor corporativo", afir¬
ma Zapparoli, lembrando que. atualmente as empresas de menor
porte utilizam micros desktop como servidores de rede, o que
pode ocasionar problemas sérios com lentidão na troca de dados
e até travamento do sistema.
YANCO LANÇA MOUSE COM TECNOLOGIA EXCLUSIVA
E PREÇO COMPETITIVO
A Yanco Tecnologia, empresa nacional fabricante de aces¬
sórios para informática e para automação comercial está lan¬
çando no mercado mais um mouse inovador. Batizado de Yanco
Toppo o equipamento substituirá com vantagens o Yanco
Optic, atual carro-chefe da linha de mouses da empresa.
Também com tecnologia scmi-ótica o Yanco Toppo pos¬
sui características exclusivas e inovadoras. Os principais des¬
taques do novo mouse são o design ergonómico, o tempo de
rolagem, estimado em 480 quilômetros, e a vida útil de seus
botões, que foram projetados para mais de um milhão de
acionamentos. Estas características garantem uma média de
100 mil horas de uso sem apresentação de nenhum defeito.
A tecnologia semi-ótica pennite transcodificar os movimen¬
tos da esfera, localizada na parte inferior do mouse, que fica em
contato da superfície através de um sensor infravermelho. Nos
mouses tradicionais essa tarefa é feita de fornia mecânica, o que
compromete a vida útil do equipamento. Já, os dois botões do
Yanco Toppo possuem resolução real de 4(X) dpi e dinâmica en¬
tre 4 e 40.(XX) dpi. Além disso, o novo mouse conta com uma
incrível veloeidade de operação máxima na faixa de 500mm/s.
Além disso, sua embalagem foi totalmente reformulada
apresentando dimensões maiores, suporte para ser colo¬
cada em gôndolas de loja e uma janela transparente que
permite maior visualização do produto.
Outra grande vantagem do Yanco Toppo é o preço. Com¬
patível com os ambientes DOS, Windows 3.1 e Windows
95. O Yanco Toppo possui garantia de um ano para defçitos
de fabricação e possui certificação FCC e CE.
Com o lançamento, a Yanco pretende conquistar ainda
mais espaço no mercado brasileiro de acessórios para
informática. Atualmente, a empresa comercializa 9.000
mouses por mês. Para o Yanco Toppo a expectativa é
comercializar mensalmente 15.000 unidades, afirma Cás-
sio Pedrào, diretor de marketing da Yanco Tecnologia.
7
Progra m a
em Pascal
para Detectar
e Remover
o Vírus
Leandro
and Kelly
Por: Dorival Afonso Cardozo
Conforme você poderá constatar lendo este artigo,
Dorival A fonso Cardozo esclarece de forma extremamente
objetiva e clara, como se comporta o famoso vírus
Leandro e Kelly na memória volátil do computador (RAM)
hem como na memória de massa (disco). De quebra, o
autor apresenta passo a passo como ocorre o processo de
inicialização do sistema operacional em disco.
8
Histórico do lírus Leandro A Kelly
Origem: Minas Gerais - Governador
Valadares (Duvido!)
O nome c tào patético que sugere ser
mesmo nome fantasia nào?
Captado: Primavera/94 cm 05/10/94
Encontrado: Bootde um Disco Flexível
Local: PAULÍNIA-SP(EmprcsaComercial)
Encontrado em um disquete de
Software Original (Acredite!)
Surgiu pela primeira vez, em outu¬
bro de 1994, causando grande pânico
nacional.
Foi distribuído largamente em um dis¬
co original (ou seria pirata?) de uma con¬
ceituada empresa multinacional, nome
que nào divulgo por motivos óbvios. O
vírus se alastrou de forma relâmpago.
Naquela época, lembro-me .quando
várias pessoas assustadas me procura¬
ram após sofrerem a reaçào do vírus que
exibia a frase: LEANDRO & KELLY...
no video do computador.
Mesmo nào sendo um vírus nocivo ele
pode ser fatal, se combinado com outro
vírus, o que pode acarretar a danificação
do Setor BOOT MASTER do disco rígi¬
do e a impossibilidade de acessâ-lo.
Duvido que seja mesmo um vinis mi-
p
nciro como se divulga. E óbvio que o au¬
tor jamais divulgaria o local onde foi pro-
duzido (SAO PAULO provavelmente). O
que estava grave na época é que os discos
originais onde ele estava gravado (3,5")
nào possuíam a chave WRITE/PROTECT,
ou seja o disco estava fisicamente impos¬
sibilitado de gravaçào... (amargas épocas
que sempre podem voltar...) Penso que a
coisa toda foi mesmo armada... se é que
vocês me entendem... Fazer um vírus esti¬
lo Romeu e Julieta e distribuído em mas¬
sa? Muito, muito estranho... obra de uma
mente Mozartiana? O que pretendia o au¬
tor deste esquema todo?
Primeiro Saiba Como se Organiza na
Memória esta Coisa...
Veja este algoritmo básico:
0000:7C00 - Primeira Parte do Vírus.
Lido pela BIOS automaticamente.
/í /í / / (7 O / Programa em Rascai (síntí- Vírus)
0()()0:7E00 - Segunda Parte do Ví¬
rus. Lido pelo vírus durante execu¬
ção corno OVFRLAY da trilha 27h
Setor 9.
Em determinada parte (primeira do
\ irus) ele se auto copia no topo da me¬
mória básica, normalmente cm
9F00:000. ficando:
9F00:0!FF - Primeira Parte
9F00:0200 - Segunda Parte
Após copiar, ele salta para ele mes¬
mo (seu clone), porém cm outra área
na memória, ile ()()()0:7C7D para
9F0():()()7Eh.
Agora Saiba Como Está o Disco
Contaminado
Trilha 0, Setor I Lado 0 = Primeira
parte do Vírus (Onde deveria estar o
Boot). Saiba que o BIOS chamará isto
quando você ligar o computador com
o disco no drive, pensando encontrar
o BOOT.
Trilha 27, Setor 8 Lado I = Segun¬
da parte do vinis.
Trilha 27, Setor 9 Lado I = Boot Ori¬
ginal que deveria estar na Trilha 0, Se¬
tor I Lado 0.
Compreenda os Passos do seu Com¬
putador até Chegar no Prompt do
Sistema
1. O microprocessador executa o pro¬
grama existente no endereço
FFFF:0000, onde existe o programa do
CHIP BIOS (Físico).
2. O Programa do BIOS após os
“checkups'* costumeiros, vai ler e exe¬
cutar o conteúdo no BOOT do disquete.
3.0 conteúdo do BOOT do disquete (progra¬
ma de BOOT) é um programa de inicialização
e um bloco de parâmetros contendo Trilha, Se¬
tor por trilha, cluster, etc. NESTA PARTE É
QUEOVÍRUSVAI ENTRAR, SUBSTITU¬
INDO ESTE PROGRAMA.
4. Sem virus : O programa do BOOT cha¬
mara os arquivos de sistema IO.SYS.etc.
Com virus : O Virus vai chamar o con¬
teúdo original (O programa de BOOT)
O Programa de Boot chamado pelo virus
vai chamar os arquivos de Sistema. IO.SYS.
etc. No caso de disco rígido, primeiro o BIOS
chamará o BOOT MASTER que logo após
vai ler e laigar o controle para o BOOT do
DOS. Caso o virus entre no disco rígido, vai
se alocar entào no BOOT MASTER.
Agora vamos ao Programa.
Dorival Afonso Cardozo desenvolve
software para Telecomunicação e Va-
ê
cinas para virus. E autor do anti-virus
nacional KANTI e CHICO At
Para eventuais contatos com o autor,
escrever para:
Rua Manoel Queiroz, 400 -Jardim Boa
Vista - Limeira - SP - CEP I34B6-330
== Listagem ==
J DETECTA E REMOVE O VIRUS LEANDRO AND KELLY DA UNI-
DADEtSE EXISTIR)
VA RI AVEL: So Detecta = true (Somente vai detectar mas nao vai remove-lo)
SoDetecta = false (Detecta c remove o virus da unidade)
Dorival AC
laboratorioA M A DEUS -Tecnologia cm segurança de dados
Para compilar. TPC rcmlk (é suficiente...)
Use Assim: REMLK <drivc:> }
const
SoDctecta = false;
\ar
unid: string(2):
function lcrFisSetoiL_seg w ofs :word: trilha, setor. cab. unid :byte ):booleun;'
var
tent: byte;
carrv: bvte;
w m
begin
tent := 0;
repeat
carry := 0;
asm
mov ax.()2() I h
mov cs. _seg
mov bx. _ofs
mov ch. trilha
mov cl. setor
mov dh. cab
mov dl. unid
int I3h
jnc (a (u j , I
mov carry. I
(iv.iu) I:
end;
tent := tent + I;
until (tent > 5 ) or (carry = 0 );
if(tent>5)and(carryo0) then
lerfissetor := false else lerfissetor := true;
end;
function EscrFisSetor(_seg^_ofs :word; trilha.setor.cab.unid :bytc ):boolean;
var
tent: byte;
carry: byte:
begin
tent :=0:
repeat
carry := 0;
asm
movax,030lh
mov es. _seg
mov bx._ofs
mov ch, trilha
mov cl. setor
mov dh. cab
mov dl. unid
int I3h
jnc <&(& I
mov carry. I
(a)(a)\:
end:
tent := tent + I;
until (tent > 5 ) or (carry = 0);
if (tent>5) and (carryoO) then
escrfissetor := false else eserfissetor := true:
end:
function BootTpJM Unid : byte ): Boolcan;
var
bootTp: array[0..S400] of byte;
Vitima: array[()..$2(X)] of byte;
Ofs,
9
.A /? T /(7 O / Pwgrawfl c*nt Pascal (.Anti- Vírus)
_Scg : Word:
\il_ofs.
No drive C: ele se comporta sem erros apontando 80h(c:). |
v it_seg: Word:
ifnot Icrfissctort n it_seg.vit_ofs.trilha.setor.cab.unid) then
tcnt : byte:
begin
carry : byte:
Writcln(*ERROde Leitura no disco../):
icm : Boolean:
Exit:
trilha.
end:
setor.
cab : bvtc:
w
if not escrfissetort v it_seg.vit_ofs.0.1.0. unid ) then
begin
: \i I NCACh
_Seg := Scg( BootT p);
BootTp[$IE] ->0=drive A: l=driveB: 80h=C: 8lh=D:
_Ofs := Ofs( BootTp):
No entanto o virus Lenadro&Kelly tem um erro na programacao
e o drive apontado sempre sera* 0 (A:) mesmo que seja B: }
LcrFisSctort_seu._ofs.(). 1.0.unid):
begin
Tem := truc:
\vriteln( * Erro de Escrita no disco../):
•
exit:
if(BootTp[S20])o SOFA thcnTem := false:
end
•
if(BootTp[S21 ]) o SOBC thenTem := false:
cise
if (BootTp[$22]) o SíKH) then Tem := false:
begin
if (BootTp[S23]) o S07C then Tem := false:
Writcln(*REMOVIDO: Virus Lcandro&Kelly da unidade/):
if(BootTp[$24]) o $033 then Tem := false:
end:
end:
if(BootTp[S25|) o SOCO thcnTem false:
end
if(BootTp[S26]) o S08E thcnTem := false:
else
if(BootTp[$27J)oSODO thcnTem := false:
begin | nao encontrado J
if (BootTp[S28]> o $0B8 then Tem := false:
BootTpJk := false:
if (BootTp{$29]) <> SOOO then Tem := false:
end:
end:
iíTcm then
begin
begin
BootTpJk := truc:
if ParamCount = 0 then
vvritcliK#7.*EN( ONTRADO VIRUS Leandro&Kelly na Unidade ):
begin
\ it_scg := seg( vitima):
writcln(#7/Faltou Definir Drive...*):
vit_ofs := ofs( v itima):
Halt( 1):
end:
if not SoDetecta then
begin ! Lendo vitima {
unid := ParamStrt 1):
trilha := biWtlp|Sld|:
case UpCase(Llnid[ 1 ])of
setor := boottpl S1 cj:
*A‘: ifnot BootTpJk(O) then writcln(*Nada Encontrado../):
cab := boottplSIF]:
‘B*: if not BootTpJkt 1) then writeln(‘Nada Encontrado../):
} unid := boottpl SI e]: Nao retirar comentário
*C*: ifnot BootTpJk(S80) then writelnCNada Encontrado...'):
Utilizar drive do CUICOAV devido a erro no Lk a unidade
end:
apontada sempre nchi 0 < \:) mesmo qiuitulo for B:.
ciul
MICRO SISTEMAS
NOVO TELEFONE E FAX
(021) 261-7841
10
APRENDA INFORMÁTICA SEM SAIR DE CASA COM RICARDO FLORES
Mais informações? Solicite pelo correio Convencional ou visite minha
Home Page no endereço
HTTP://W3.0PL:NLINK.C0M.BR/RICARD()FLC)RI:s
CADA CURSO E COMPOSTO DE:
• Cronograma de aula a ser seguido.
• Aposlila pelo Método Tutorial “Passo a Passo" pan^õc^rêmã^ãnirêxêrcícK HirTrêfãmcnHMnTHíêu
• Disquete contendo os exercícios prontos do Tutorial, para você tirar suas dúvidas.
Desejo receber por carta registrada, os cursos:
De
Por
CURSO
R$
R$
Qde.
R$
Introdução à Informática até o IVIS/DOS 6.2
1
38,00
22,80
X
Windows 3.1
44,00
26,40
X
Para Windows 3 . 1 , 3.1 1 ou 95 ou Cairo: í
Painthrush dos 8 aos 80 Anos
27,00
16,20
X
CorelDRAW! 5.0
47.00
28,20
X
1
Programação em Visual Basic 16/32 Bits
44,00
26.40
X
1
Programação em Delphi 16/32 Bits com SQL
58,00
35,00
X
HTML - Criando sua Home Page na Internet
27,20
16,30
X
Word 6.0/7.0 - Editor de Texto
44,00
26,40
X
1
Excel 5.0/7.0 - Planilha de Cálculo e Gráficos
45,00
27,00
X
Para DOS:
•
dBase III Plus - Banco de Dados Interativo
27,00
16,20
X
Programação em dBase III Plus
27,00
16,20
X
Programação em Clipper 5.01 / 02 (Básico)
35,00
21,00
X
TOTAL DO PEDIDO:
Não perca!
Promoção
Arrasadora!
D es co til o
de 40%
Aproveite!
Faça já
Depósito em numerário a favor de Audit System Serviços Ltda.
Banco Itaú, agência 0934 Vila Isabel, Rio de Janeiro, C/C 22.142-5
Ligue ou passe um Fax para (021) 571-5903 - Ricardo Flores, informando:
seu nome, endereço completo e confirmando o crédito no valor TOTAL DO PEDIDO,
já incluídas as despesas postais.
Prazo de Entrega: Imediato.
Paeamento Via Correio
e-mail
ricardoflores@openlink.com.br
Cheque cruzado e nominal à Audit System Serviços Ltda.
Envie para CAIXA POSTAL 25.096 - RIO, CEP 20.552-970.
no valor TOTAL DO PEDIDO, já incluídas as despesas postais
Prazo de Entrega: Após a compensação do cheque.
Nome:
2Fone:
Endereço:
•
Bairro:
Cidade:
Estado:
CEP:
Data:
Assinatura:
Por: Marcos Antonio Gambeta
Marcos Gambeto vem confirmar neste artigo
a versatilidade da linguagem Clipper atè na
geração de música digital.
E importante o leitor observar que a
experiência e a criatividade aliadas ao
talento pessoal do programador são os
9
fatores que o diferenciam.
Tocando a Música “Apanhei-te,
Cavaquinho! ”
A única funçào disponível na lingua¬
gem Clipper para a geraçào de sons é a
fiinçào TONE. Com ela é possível emi¬
tirmos um som informando sua frequên¬
cia e duraçào. Apesar de ser útil para co¬
locarmos avisos sonoros nos programas,
apresenta uma certa dificuldade quando
nossa intenção é colocar um pequeno tre¬
cho musical ou uma música mais longa.
Por exemplo: para uma música com
50 notas teremos de calcular a freqüèn-
cia e a duraçào de cada nota e criarmos
uma seqüència de 50 comandos TONE.
Apesar do Reference Guide - volume
2 do CA-Clipper trazer uma tabela de
notas musicais com as freqüências das
notas em duas oitavas, teremos bastante
trabalho para tocar a nossa música.
Quem utiliza o GW-Basic ou o MS-
DOS QBasic tem a instrução PLAY que
permite tocar uma música através de
uma sequência de comandos. Pensando
em passar esta facilidade para a lingua¬
gem Clipper, desenvolvi uma fiinçào que
funciona de forma semelhante ao co¬
mando PLAY do MS-DOS QBasic.
Digite o programa da listagem \ e com¬
pile com o comando CLIPPER MUSICA
/L. Trata-se da música “Apanhei-te,
cavaquinho!’', publicada originalmente na
revista Micro Sistemas # 24, página 25.
Ela servirá de exemplo para você ter uma
idéia de como funciona a fiinçào PLAY.
Tendo digitado a listagem 1, digite a
listagem 2 que contém a funçào que irá
interpretar os comandos da listagem 1.
Compile com CLIPPER PLAY /L /N.
Para gerar o arquivo EXE, digite
RTLINK F1 MUSICA,PLAY (ou use o
linkeditor de sua preferência).
Execute o arquivo MUS1CA.EXE e
ouça a música.
Para utilizar a funçào em seus pro¬
gramas, inclua o arquivo PLAY.OBJ na
geraçào do arquivo EXE. A sintaxe é a
seguinte: PLAY ( cEXP ), onde cEXP
representa uma seqüència de coman¬
dos, conforme a tabela seguinte.
Comandos
Observações
Nào foi incluída nenhuma rotina para tratamento de erros.
Caso sua música nào seja executada corretamente, verifi¬
que a sintaxe. Tente tocá-la em partes para isolar o trecho
que nào está tocando corretamente.
Esta funçào foi testada nas versões 5.2 e 5.3 do CA-Clipper.
Acredito que funcionará corretamente nas versões anteri¬
ores do Clipper, com poucas modificações.
Marcos Antonio Ciam beta tem 2H anos e presta
serviços para empresas desenvolvendo progra¬
mas em CA-Clipper. Os leitores que tiverem du¬
vidas sobre a funçào PLAY poderão contatar o
autor pelo e-mail: brigido@sti.com.hr:
Listagem 1; MUSICA.PRG
* APANHEI -TE, CAVAQUINHO!
* (CHORO)
* ERNESTO NAZARETH - BALDONAM
* PUBLICADO ORIGINALMENTE NA REVISTA MICRO SISTE¬
MAS N° 24
* NO ARTIGO "DO, RE .... MICRO", DE THELMA V. T.
FONTOURA.
A**T 100; U6; 04; GFfEEDC# DF* EDCC ;03; BA«B; 04; EDC; 03; BBAG*A;04; DC; 03; BAAGF*G; OI :C;
B=- EDCfDEFfGAB; 04; CCfDFfEDC ,03; AiB: 04; ED; P16; GFfEEDCfDFtEDCC; 03; BA*E; 04; EDC ;03; B*
C='BAG»A; 04; DC; 03; BAAGFfG; 04; C; 03; BAGFfEDfEAGFHEEDC#DEF*GAE ; 04 ; CC#DD«EEt F*; L4; G; P16 "
D='L16;03;B;L32;04;DjL16;C;03;BAiB;04;EF#Gj03jB;04;G;03;B;04;G;03;A«;04;CiF*F*
;03 ;At;04; Ff ;03; A# ;04 ;G;03 ;AB;OI; F*Ft;03; A;04 jFf;03;A*
E=*04;Ff;03;G8;04;E;P16;03;B;L32;04;D;U6jC:03;BAtB;04;EFfG;03;B;04;G}03;B;04;
G;03;B;04 :Fi;03;B;04;E;03;B;04;D;03;B;04;D;03:EFf;04;CfE;03;E;04;Ci;03;E;04;C;
03;Df F»B;P16;B;L32;04;D;L16;C;03;B*
F 5t *WIB;04;EFfG;03;B, , 04}G;03;B:04 jG;03;A#;04;CfFfFf;03;Af ;04;Ff ;03;Ai;04;í5;03;A
B;04;FfFt;03;A;04;Ff ;03;A;04;F;03;G#B;04;E;P16;L8;Df;L16;EF;03;A;04;E;03;A;04;
D; 03; A; 04; C; 03; A*
G=-04 ;C;03; BCB; P16; LB; A*;U6 ;B;OI ;C ;03; BA*B;04; EDfGF*; 14 ;E; P16'
H=-04;L16;GFfGAGBC;03;AGEC;L8.;A;L16;A;P8;L8;A;P16;G;U6;AB;04;L8;C;L16;D;Le.
;E;L16;E;Pfl;L8;E-
I=* P16; U 6; EDf EFEDiECE; 03; B; 04; E; 03; A ;04; E; 03 j G j 04; E; P16; DCf DEDCfDED; 03; B; 04 :G; PI 6
;GF*G*
J=*AGK;03;AGEC;L8. ;AjL16;P9;L8;A;P16;G;L16;AB;Lflí04;C;L16;D;L8. ;E;Lló;E;P8;L8;
E;P16;Df;L16;EFEDEíL8.;A;U6;A;P8;L0;A;P16;L16;GFD;O3;BGFD;L8.;C;O4;L16jC;P16*
X=A*B*C
y=H*i
PLAY(X*X-»IHE*F*G+IHE*PK;*X*D*E»F*G+Y*J*Y*J*X*D*E*F*G)
QOIT
Listagem 2: PLAY.PRG
FUNCTION PLAY
PARAMETERS MUS
LOCAL N,T,0,L,L2,P,A,X
PRIVATE FREQ[84]
FREQ[01]=32.69*2
FREQ [02]=34.65*2
FREQ[03]=36.71*2
FREQ[04]=38.89^2
FREQ[05]=41.20*2
FREQ(06]=43.66*2
FREQ[07]=46.24*2
FREQ[08]=48.99*2
FREQ[09)=51.90*2
FREQ(10)=54.99*2
FREQ[11]=58.26*2
FREQ[12]=61.73*2
FOR N=13 TO 84
FREQ[N]=FREQ[N-12]*2
NEXT N
T=100
0=4
L=. 25
L2=.25
P=.25
A=1
MUS=UPPER(MUS)
DO WHILE A<=LEN(MUS)
IF SUBSTR(MUS,A,1)="T"
A=A+1
X=""
13
ê
DO WHILE SUBSTR(MUS,A,1)$"0123456789"
A=A+1
X=X+SUBSTR(MUS,A,1)
ENDDO
A=A+1
TONE(0,256/T*18.2*P)
ENDDO
ENDIF
T=VAL(X)
•
IF SUBSTR(MUS,A,1)$"CDEFGAB"
IF T<32
X=SUBSTR(MUS,A,1)
T=32
DO CASE
ELSEIF T>255
CASE X="C"; N=1
T=255
CASE X="D"; N=3
ENDIF
CASE X="E"? N=5
ENDIF
CASE X="F"; N=6
IF SUBSTR(MUS,A,1) ="0"
CASE X="G"? N=8
A=A+1
CASE X="A"; N=10
IF SUBSTR (MUS,A,1)$"0123456"
CASE X="B"; N=12
0=VAL (SUBSTR(MUS,A,1))
ENDCASE
A=A+1
N=N+(0*12)
ENDIF
A=A+1
ENDIF
X=SUBSTR(MUS,A,1)
IF SUBSTR(MUS,A,1)="<"
0=0-1F(0> 0,1,0)
A=A+1
ENDIF
IF SUBSTR(MUS,A,1)=">"
0=0+IF (0<6,1,0)
A=A+1
ENDIF
IF SUBSTR(MUS,A,1)="L"
A=A+1
DO CASE
CASE X="#"? N=N+1? A=A+1
CASE X="+"; N=N+1; A=A+1
CASE X="-"; N=N-1; A=A+1
ENDCASE
X=L2
DO WHILE SUBSTR (MUS,A,1)="."
L2=L2+(X/2)
A=A+1
X=""
ENDDO
DO WHILE SUBSTR (MUS, A, 1) $"0123456789"
TONE(FREQ[N],256/T*18.2*L2)
X=X+SUBSTR(MUS,A,1)
L2 = L
A=A+1
ENDIF
ENDDO
IF SUBSTR(MUS,A,1)="N"
L=VAL(X)
A=A+1
IF L<1
X=""
L=1
DO WHILE SUBSTR(MUS,A,1)$"0123456789"
ELSEIF L>64
X=X+SUBSTR(MUS,A,1)
L=64
A=A+1
ENDIF
ENDDO
L=l/L
N=VAL(X)
li
CN
IF N<0
DO WHILE SUBSTR (MUS, A, 1) =* . "
N=0
L2=L2+(L/2)
ELSEIF N>84
A=A+1
N=84
ENDDO
v m
ENDIF
ENDIF
I X=L2
IF SUBSTR(MUS,A,1)="P"
DO WHILE SUBSTR(MUS,A,1)="."
A=A+1
L2=L2+(X/2)
X=""
A=A+1
DO WHILE SUBSTR(MUS,A,1)$"0123456789"
ENDDO
X=X+SUBSTR(MUS,A,1)
IF N=0
A=A+1
TONE(0,256/T*18.2*L2)
ENDDO
ENDIF
P=VAL(X)
IF N#0
IF P<1*
TONE(FREQ[N),256/T*18.2*L2)
P=1
ENDIF
ELSEIF P>64
L2=L
P=64
ENDIF
ENDIF
IF SUBSTR(MUS,A,1)$" ;"
P=l/P
A=A-*-l
X=P
ENDIF
DO WHILE SUBSTR(MUS,A,1)=-."
ENDDO
P=P+(X/2)
RETURN NIL
14
SiVúr U VM VI I li) dr lnf.iritiálkM
ORACLE
Persottal Oracle 7.3 e Power
Objects 2.0
José Antônio Ram a lho
Makron Books
Este livro introduz ao usuário nos conceitos
básicos do banco de dados Oracle e gradativamente •
vai apresentando os componentes, mostrando como
criá-los e mantê-los usando as ferramentas gráficas
do produto, como o Navigator. Como um guia de
iniciação, a obra inclui uma introdução á linguagem
SQL e PL/SQL da Oracle. O leitor aprenderá a criar
Stored Procedures, Triggers e outros tópicos
avançados de uma forma simples e objetiva.
O livro inclui ainda, um guia de referência da
linguagem Oracle Basic, usada pelo Power Objects
para customização de sistemas.
EXPANDINDO E
ENVENENANDO O SEU PC
Kris Jamsa
Makron Books
Livm essencial para qualquer pessoa que tenha
um PC e seguindo as instruções passo a passo,
queira acrescentar novo hardware, instalar
qualquer software e maximizar a capacidade atuai
Finalmente um texto que torna o hardware e o
software do PC fáceis de entender. Cada liçào
requer somente 5 ou 10 minutos do seu tempo e
ajuda o usuário a poupar muito dinheiro. Você
mesmo pode atualizar o seu PC.
Para Windows 3.x e 95.
Expandindo e
15
RR7 GO
Desvendando
a Tecnologia
do Pentium
MMX .
PonAndretti Barros
E verdade que o Pentium MMX substituirá
as placas de som, de vídeo e de modem ?
Todos os aplicativos atuais vão se beneficiar
com o Pentium MMX?
Um Pentium MMX 166 é mais rápido do
que um Pentium Clássico 200?
Estas e outras questões são esclarecidas por
Andretti Barros, autor de presente artigo.
Outro dia estava conversando com
um amigo, quando um assunto tomou
evidência: A tecnologia MMX. Este me I
disse que o Pentium MMX possuia ca¬
racterísticas de placa de video, de som
e modem, e nào seria mais necessário i
possuir estas placas separadas.
Após esta conversa comecei a
pesquisar sobre o assunto e descobri que
infelizmente não é assim que a coisa fun¬
ciona. A tecnologia MMX é a inclusão
de 57 novas instruções ao conjunto de
«
instruções do processador, mas somente
programas que utilizem instruções
MMX poderão se beneficiar destas van- I
tagens (basicamente aumento de veloci- I
dade). Então um programa não MMX
nào se beneficiará de um processador
MMX a nào ser por um fato: a Intel au¬
mentou o tamanho a memória cache in¬
terna do Pentium de 16 KB para 32 KB i
no Pentium MMX. Isto faz com que um
Pentium MMX seja mais rápido que um
Pentium comum com o mesmo clock,
mesmo nào usando programas MMX.
Um Pentium MMX 166 consegue ser
mais rápido até mesmo do que um
Pentium 200 comum.
Para programas MMX são muitas as
vantagens. O Pentium MMX apresen¬
ta a maior revisão no conjunto de ins¬
trução dos processadores utilizados em
PCs desde a criação do 386.
Por razões de compatibilidade a Intel
nào criou nenhum “modo de operação
MMX”, nem adicionou flags ou fez
qualquer mudança no núcleo do
processador. A estrutura do processador
MMX continua exatamente igual a de
um Pentium comum (chamado agora
de Pentium Clássico). Para que fossem
desnecessárias alterações no núcleo do
processador, o Pentium MMX utiliza
os mesmos registradores do co-
processador matemático. Desse modo,
as chances de incompatibilidade nào
existem e um programa pode executar
instruções MMX sempre que desejar.
Para um programa, executar instruções
MMX é tão fácil quanto utilizar o co-
processador matemático.
As instruções MMX nào são comple¬
xas. São basicamente instruções de soma,
subtração, multiplicação e comparação de
bits. Coisas que o processador já fazia.
16
AlR TIGO/L>esvendando a Tecnologia do Pentium MMY
A novidade do MMX é que ele tra¬
balha com um novo conceito: SI MD
(Single Instruction, Multiple Data -
Instruções simples para múltiplos da¬
dos). Operações simples e de dados cur¬
tos podem ser feitas simultaneamente,
o que acarreta grande ganho de tempo.
Para exemplificar este conceito vamos
pegar duas imagens gráficas e realizar a
fúsào delas. Imagine uma foto sua e a de
uma paisagem, e você deseja flindir as duas
em uma só. Teoricamente fazer isto é mo¬
leza: basta somaras duas imagens, mas para
o processador ó um pouco mais complexo.
Profissionalmente vocc utiliza sua pla¬
ca de vídeo configurada a trabalharem RGB
Tnie Color (24 bits por pixel) ou CMYK
Tme Color (32 bits por pixel). No primeiro
caso, cada ponto na tela é armazenado em
uma variável de 24 bits, 8 bits para o com¬
ponente vermelho do ponto (R), 8 bits para
o verde (G) e 8 bits para o azul (B). No
segundo, cada ponto é amiazenado em uma
variável de 32 bits. 8 bits para o ciano (C),
8 bits para o magcnta (M), 8 bits para o
amarelo (Y) e 8 bits para a intensidade (K).
Cada ponto presente na tela é formado por
um pouco de cada componente.
Para o processador efetuar a soma das
duas imagens ele terá que somar indivi¬
dualmente cada ponto, um a um. Porém
nào basta somar os 32 ou 24 bits de cada
ponto. Ele terá que somar individualmen¬
te o componente C, M, Y e K (ou R, G e
B) de cada ponto. Para formar o primeiro
ponto da imagem, o processador deverá
efetuar a soma (este processo pode demo¬
rar um bocado):
Você deve ter observado que cada
soma individual nào é uma soma com¬
plexa de 32 ou 64 bits, sào somas de
pequenos números de 8 bits.
Cada registrador MMX comporta 64 bits
que podem ser divididos em 8 grupos de 8
bits, portanto, com uma só instrução MMX
podemos somar dois pontos de duas ima¬
gens diretamente. Quando nào utilizamos
esta instrução MMX, precisamos de 8 ins¬
truções para executar o mesmo processo.
Processos de filtros, efeitos especiais, se¬
paração de cores e animações sào apenas al¬
guns exemplos práticos da rapidez trazidos
pelas instruções MMX. Para os leitores te¬
rem uma idéia, o processo de fúsào de dias
telas 640 x 480 pontos em RGB Tme Color
usando instruções MMX utilizara I bilhão
de instruções a menos em comparação ao
sistema nào MMX atualmente utilizado.
Andretti Barros cursa o /- per iodo de
Ciências cia Computação na Universi¬
dade Federai do Rio Grande do Norte
e disponibilizou apenas seu e-mail
(andretti@lcc.ufrn.hr) para eventuais
contatos.
C (primeira imagem) + C (segunda imagem) = C (do ponto fundido)
M (primeira imagem) + M (segunda imagem) = M (do ponto fundido)
Y (primeira imagem) + Y (segunda imagem) = Y (do ponto fundido)
K (primeira imagem) + K (segunda imagem) = K (do ponto fundido)
FABRICAMOS CAPAS PARA TODA LINHA DE INFORMÁTICA
^apas para telefones celulares nacionais e
importados (em couro)
Revenda com personalização:
MOUSE PADS COM BASE DE ESPUMA LATEX.
CONFECCIONAMOS CAPAS SOB MEDIDA E COM VÁRIOS TIPOS DE MATERIAIS.
FA ÇA UM ORÇAMENTO SEM COMPROMISSO:
TEL.: (041) 279-1206
Caí no
Mundo
Por: Marcelo Zóchio
Tomei conhecimento da rede (é as¬
sim que vou chamá-la) através da tele¬
visão. Filmes de espionagem, como
“007", mostravam, através de algo bem
parecido com a Internet, um universo
de coisas que nós nunca sonhava-mos
em existir, alguns deles desenvolviam
toda uma trama em volta da rede, ou¬
tros a mostravam como principal arma
de terroristas, que a usavam para entrar
em projetos ultra-secretos das forças
armadas, e assim roubar as plantas de
armas super poderosas e desta forma
conseguir conquistar o mundo..Depois
a rede virou personagem de novelas, em
uma delas acontecia um romance que
durou praticamente toda a novela, onde
o casal se conhecia e aprendia a se amar
através do “cupido Internet", e esse tipo
de coisa acontece mesmo na vida real.
os tele-jomais já cansaram de mostrar
depoimentos de pessoas que passaram
por este tipo de situaçào.
Nesta matéria, vou tentar passar para
vocês, as emoções que senti quando comecei
a explorar a tão famosa e grandiosa rede
chamada INTERNET”, e assim me tornei
um internauta.
Vendo todo este marketing em volta
desta coisa que sempre pareceu fasci¬
nante, quem nào se sentiu curioso a
participar dela?
A primeira vez em que tive realmen¬
te um contato pessoal com a rede, foi
no trabalho de um amigo. Quando en¬
trei em sua sala ele estava conectado a
rede, entào eu sentei do seu lado e co¬
mecei a observar o que ele fazia, foi
entào que ele entrou em um site de bate-
papo, e começou a conversar com um
montào de gente de tudo que é lugar,
ele estava perguntando a elas quem te¬
ria um drive que ele precisava, e mes¬
mo as que nào tinham respondiam e
puxavam papo, e desta forma ficamos
conectados coisa de duas horas no mí¬
nimo, é claro que a uma certa altura, eu
nào resisti e pedi para conversar tam¬
bém, é incrível a quantidade de amigos,
dos quais provavelmente 99% você
nuca vai conhecer, você faz. Gente de
tudo o que é tipo, e é um vai-e-vem de
imagens, arquivos, e-mail, etc. que um
manda para o outro. Me senti perdido
no espaço, perdi por completo a noçào
do tempo, só me dei conta da hora quan¬
do uma ligaçào em outra linha foi envi-
t
>
18
,4 R T! Cr O / C V// no JVÍu niio
as home-pages em relaçào aos jor¬
nais e revistas.
ada para nós, mas até isso acontecer,
eu já tinha viajado por meio mundo,
conversado com metade da população
mundial, ou pelo menos era assim que
eu me sentia. Depois deste dia eu co¬
mecei a frcqüentar a rede, não com
muita freqüència, pois ainda não tinha
a minha inscrição em um provedor, e
só podia “viajar" pela rede quando ti¬
nha algum tempo no trabalho.
A verdade é que quando você esta
conversando com alguém pela
internet, não é a mesma coisa que con¬
versar pelo telefone como alguns ima¬
ginam, é diferente, você nunca viu
aquela pessoa e derrepente está ali
conversando com ela, trocando infor¬
mações. Assim também acontece com
Com o tempo me tornei
mais um intemauta, não
cheguei a pegar aquela
febre de internet, talvez
porque não podia estar
toda hora nela, mas co¬
mecei a perceber que a
rede não foi criada ape¬
nas para diversão, e como ela co¬
meçou a ser importante para o meu
trabalho. Com ela pude fazer pes¬
quisas para desenvolver certos tra¬
balhos, e nas horas vagas viajava um
pouco por alguns dos centenas de
sites que existem na rede, e adquiri
preferência por alguns, dos quais fre-
qüento até hoje.
0
E impressionante
a quantidade de coi¬
sas contidas dentro
da rede, qualquer assun¬
to que você imaginar, é
só escrever o nome lá no
“Search" do programa que você
usa para navegar e pronto, ela irá
lhe mostrar uma série de ende¬
reços no mundo inteiro nos
quais você poderá encontrar aquilo
que você procura.
Isso sem contar com a comodidade
que tive quando me vi na necessidade de
mandar um arquivo de trabalho para um
cliente e não tinha como ir nem mandar
ninguém lá. Então apenas peguei o seu
e-mail e mandei o meu arquivo via
internet. Simples, prático e rápido.
Se você ainda não conheceu real¬
mente a rede, vá em frente e de um jei¬
to de conhecer, assim como eu e todos
aqueles que já a conhecem, você tam¬
bém vai ficar surpreso com a quantida¬
de de informações que ela tem para te
oferecer.
#
Marcelo Zôchio è diretor da revista
Micro Sistemas .
• /
ANUNCIE AQUI
4,5 X 18 cm
APENAS R$ 100,00
Informações pelo telefone(021)589-2088
19
Dê uma chance ao sucesso
Se você passou horas ou dias, ou por acaso descobriu aquela super-dicu sobre uma rotina de uma lingua¬
gem de programação, ou sobre a Internet, a Multimídea, o Windows, o OS2 ou o DOS, ou sobre uiul
planilha, tf*//tor de texto, gerenciador de banco de dados, ou editor gráfico que você usa com frequência, tf
portanto, domina, divulgue seu conhecimento pela Micro Sistemas.
<///tf í/Artf espaço para trabalhos feitos no Brasil, por leitores e para leitores. f.vta tf a pricipal razão do
sucesso imbativel da revista. Afinai grande parte dos profissionais com projeção neste mercado, foram ou
ainda são colaboradores da Micro Sistemas.
O que você esta esperando para fazer parte deste tinte?
Para que seu trabalho (artigo, crônicas, curso, dicas, programas, rotinas, etc) seja avaliado por nossa
equipe é imprescindível que:
- A matéria venha impressa (texto e figuras) e também gravada em disquete;
• .
- Aà figurai sejam gravadas separadamente:
Os programas e as rotinas venham com uma versão compilada com exemplos;
- O disquete seja padrão IBM PC (disco 5 1/4 " ou 3 1/2
- O texto seja em formato Word for Windows.
Se aprovada por nossa equipe,a matéria só será publicada se acompanhada de autorização do autor . A
autorização é dada quando o autor define o texto de fechamento da matéria, ou seja, nome, endereço, e
reduzido histórico de suas atividades. Sempre indicar se deseja a publicação de dados pessoais, tais como,
telefone, caixa postal, nome da empresa, e-mail, etc.
O material enviado para a revista não será devolvido.
Os autores das matérias publicadas, além de estarem divulgando conhecimento para milhares de leitores,
receberão inteiramente grátis uma assinatura anual de Micro Sistemas, ou um pagamento
simbólico, por matéria publicada a titulo de agradecimento.
Enviar o material para:
Caixa Postal 18347 , CEP: 20722-970,RJ - RJ
REVISTA MICRO SISTEMAS
TEL/FAX: (021)261-7841 ( DAS 9 ,00 ÂS 17,00 HS)
I * . *
Tel. (021)532-0770 cod. 4016779
RRTIGO
Alterando o
Menu de
^ ^ B B B V 9 mP b wÊ 9 B 9 B 9 9 9 W 9 O U u
Contexto do
Windows 9 5
com o
Visual Basic
Por: Disnei Rocha Bernardo
Aprenda com Disnei Rocha Bernardo a
mudar o Menu de Contexto do H’indo\\s95
1
usando o Usual Basic.
O Visual Basic nas versões de 32
bits - 4 e 5 tem algumas características
surpreendentes, que muitas vezes nào
sào adequadamente exploradas. Entre
elas, citamos o uso das funções da API
do WIN32, que muitas vezes nào sào
utilizadas por falta de conhecimento
por parte dos programadores acerca do
poder destas funções e também de
como usá-las.
hçativo
jgem de Bdn
agern de Bitn
agem de Bitn
agem de Bi*n
Por exemplo usando apenas o Visual
Basic, podemos alterar o menu de con¬
texto para um tipo de arquivo do
Windows 95 - os arquivos de Bitmap,
que tem a extensào BMP, colocando ao
lado das já existentes a opçào “Usar
como Papel de Parede", sem precisar
abrir o Paint.
Assim, ao pressionar 0 botào direi¬
to do Mouse sobre qualquer arquivo
que tenha a extensào BMP, você pode¬
rá usá-lo como papel de parede, imedi¬
atamente.
Para acrescentar esta funcionalidade
ao Windows95, siga os passos.a seguir:
Abra o Visual Basic (4 ou 5).
Ao iniciar o projeto, remova o form 1, que
foi criado como default.
Insira um novo módulo (BAS).
Digite a listagem a seguir, salve e
gere um executável, com a opçào
MAKEEXE.
Salve-o no diretório C:\Windows com
o nome de SetWallPaper.exe
<t 77 CmCJ / sí/tcrrando Mc*nu
=== Listagem 1 ============================ • Sal ve-a com qualquer nome, mas com a extensão. REG (sem
. isto não funciona).
Dê um duplo clique sobre o icone do arquivo
REG. Isto faz o Windows executá-lo. Se você
digitou corretamente, receberá uma mensagem
dizendo que as informações foram gravadas no
registro.
Agora é só abrir o Explorere clicar com o botão
direito sobre qualquer arquivo de Bitmap e ver o
resultado.
Atenção para o fato de que a linha com o declare function deve
ser digitada em uma única tinha.
Não tente executar o programa diretamente, ele não funcionará.
A seguir entre no bloco de notas, e digite a listagem seguinte:
=== Listagem 2 ============================
Disnei Rocha Bernardo c analista
programador, atualmente na
Equitel. trabalha com Visual Basic
e SQL-SERI ER
MIC ROSOFT EXCEL
passo A PASSO
Microsoft Press
Makron Books
Com este livro e com o Microsoft Excel 97, você aprenderá a:
- Lançar e formatar seus dados e escrever fórmulas.
- Criar um modelo para agilizar seu trabalho.
- Disponibilizar suas próprias planilhas na Internet ou
Intranets com o Microsoft FrontPage.
- Administrar suas tarefas com a ajuda do Microsoft Outlook.
- Consolidar dados de várias planilhas em uma única.
- Localizar e organizar informações , filtrando
classificando e subtotalizando.
- Resumir e analizar dados utilizando a visualização das
tabelas dinâmicas.
- Utilizar gráficos /xtra visualizar tendências e relacionamentos.
- Trabalhar com outras pessoas simultaneamente ,
compartilhando uma pasta através da Intranet de sua
empresa.
22
Gola PrMtco de Auto Aprendizado
tl
MAKRON fioolt
Microsoft Press
\
REGEDIT4
[HKEY_CLASSES_ROOT\Paint.Picture\shell\Usar_como_Papel_de_Parede]
"EditFlags"=hex:01,00,00,00
«=*Usar como Papel de Parede"
(HKEY_CLASSES_ROOT\Paint.PicturcVshcll\Usar_como_Papcl_de_Parede\command]
«=*C:\\WINDOWS\\SetWal1 Paper.exe %1"
Por: Marcus Fúlvio
Muitas vezes, lendo fontes de
programas diversos, aprendia algu¬
ma coisa que me era útil aplicado
em outros programas ou rotinas. Vi
muitos colaboradores enviarem
exemplos em Clipper com diferen¬
tes formas de identaçào e docu¬
mentação, o que prova que a
criatividade/inspiração influi dire¬
tamente na forma de montarmos
nossos programas.
Sendo assim, a listagem do progra¬
ma “Relógio Digital" pode trazer a
você uma luz para a solução de al¬
gum programa que objetive um resul¬
tado nada relacionado com este pro¬
grama. De experiência própria posso
dizer isto. Já aproveitei muitos tre¬
chos de alguns programas listados
aqui para soluções que não se relaci¬
onavam às do programa em questão.
Acho bastante produtiva a leitura de
códigos alheios.
O programa Relógio Digital lê
cada dígito da hora atual, e de acor¬
do com valor encontrado um outro
valor ê dado às variáveis x I, x2. x3,
x4, x5. O programa é executado até
que se tecle ESC.
Pode-se integrar este programa a
um sistema, tornando-o uma
procedure, e indicando-se uma tecla
de função para acionar esta procedure
(SET KEY) transformamos o mesmo
em descanso de tela. Incrcmentando-
o como desejar.
Para aqueles que gostam de programar em
Clipper Marcus Fúlvio apresenta neste
artigo um programa muito interessante,
trata-se de um relógio digital simples,
porém de muita precisão.
Marcus Fúlvio Machado tem 21
anos, è instrutor de Informática,
funcionário da Digitron Informá¬
tica em Sáo Joào Del Rey, trabalha
a sete anos com informática. 2" grau
completo, autodidata em (Windo¬
ws 3. 11 e 95. Word. Excel, Power
Point, Clipper. MS-DOS).
End. Com.: Rua Ge tá lio Vargas , 125
e 135 - Centro.
Sáo Joào Del Rey, MG. CEP: 36300-000.
Fone/Fax: (032) 37I-/II9
e-rnail: digitron@mgconecta. com.hr
23
ARTIGO /
Relágia Digital ent Clipper
Listagem:
* Relogio Digital * clock.prg
* Setembro 1997.
* M. F. Machado
* compilacao: Clipper clock
* linkedicao: rtlink fi clock
***♦*+★*********+*+********
set curs off
clea
set proc to clock
publ t,e,m,p,o,s,xl,x2,x3,x4,x5
set colo to r
@0,0 to 24,79 doub
set colo to b+
@3,6 to 20,72
set colo to gr+
@11,30 say "#"
@13,30 say "#"
@11,49 say
@13,49 say "#"
set colo to g
do while inke()#(27)
t:=subs(time O,1,1)
e:=subs(time(),2,1)
m:=subs(time(),4,1)
p:=subs(time(),5,1)
o:=subs(time(),7,1)
s:=subs (time() , 8,1)
y=val(t)
do numero /*busca o primeiro digito da hora*/
@10,14 say xl
@11,14 say x2
@12,14 say x3
@13,14 say x4
@14,14 say x5
y=val(e)
do numero /*busca o segundo digito da hora*/
@10,22 say xl
@11,22 say x2
@12,22 say x3
@13,22 say x4
@14,22 say x5
y=val (m)
do numero /*busca o primeiro digito do minuto*/
•10,33 say xl
@11,33 say x2
@12,33 say x3
@13,33 say x4
@14,33 say x5
y=val(p)
do numero /*busca o segundo digito do minuto*/
@10,41 say xl
@11,41 say x2
@12,41 say x3
@13,41 say x4
@14,41 say x5
y=val(o)
do numero /*busca o primeiro digito do segundo*/
@10,52 say xl
@11,52 say x2
@12,52 say x3
@13,52 say x4
@14,52 say x5
y=val(s)
do numero /‘busca o segundo digito do segundo*/
@10,60 say xl
@11,60 say x2
@12,60 say x3
@13,60 say x4
@14,60
say x5
enddo
set curs
off
* Procedure Numero
********
**********
proc numero
do case
case
y=l
xl=" 000 *
•
x2=" 000 *
x3=" 000 -
x4=" OOO *
x5=" OOO -
case
y=2
xl= w OOOOO"
x2="
x3="00000"
x4="00
00"
x5="00000"
case
y=3
xl="00000"
x2="
OO"
x3="00000"
x4="
00"
x5="00000"
case
y=4
xl="0
0 "
x2="0
0"
♦
x3="00000"
x4="
OO"
x5="
00"
case
y=5
xl="00000"
x2="00
x3="00000"
/
\
x4="
00"
x5="OOOOO"
case
y=3
xl="OOOOO"
x2="00
x3="OOOOO"
x4=*00 OO"
##
x5="OOOOO"
case
y=3
xl="OOOOO"
x2="
00"
• '•
x3="
OO"
x4="
00"
x5="
OO"
1
case
y=3
xl="OOOOO"
x2="0
0"
x3="OOOOO"
x4="0
0"
x5="OOOOO"
case
y=3
xl="OOOOO"
x2="0
0"
HM#!
x3="OOOOO"
x4="
0 "
x5="OOOOO"
case
y=0
xl="OOOOO"
x2="0
0"
#
x3="0
0"
•
•
x4="0
0"
x5="OOOOO"
endease
•
RE TROPROPA GA ÇÃ O
Por: Carlos A Thompson, Ph.D
Comentários
1. O algoritmo de retropropagaçào nem
sempre converge;
2. Rede muito complexa perde a ca¬
pacidade dc generalização ( rede ri-
gida ) e implica em um menor núme¬
ro de iterações para atingir a preci¬
são ( acurácia ) desejada;
«
3. Rede menos complexa, ao contrário,
aumenta a capacidade de generalização
( rede menos rígida ) e implica em um
maior número de iterações para atingira
precisão ( acurácia ) desejada;
4. Erro é a diferença entre o desempe¬
nho desejado e o obtido na(s) saida(s)
da Rede Neural Artificial (RNA);
5. O aprendizado do sistema é reali¬
zado por amostras ou padrões ( en¬
trada m , saida desejada m ), onde I £
m £ p. Esses padrões provocam mu¬
danças nos parâmetros w ( pesos ) do
sistema. Se o número total de amos¬
tras for N, pode-se fixar p £ N e calcu¬
lar o peso ótimo para cada
subconjunto p de N. Existirão aproxi-
madamente N / p ( se possível, esco¬
lher N e p de modo que sejam múlti¬
plos ) valores ótimos de cada w do
sistema. Outra forma de aprendizado
é caso ainda mais restrito onde p = 1.
Neste caso, a dimensão de cada vetor
coluna w do sistema é ( Nx I);
6. Tenha sempre em mente: a leitura é
rápida e o aprendizado é lento;
7. Projeto de RNAs ( modelagem flexí¬
vel devido as complexas interrelaçòes
entre os parâmetros que influenciam a
eficiência da rede).
Danilo prosseguimento ao artigo anterior
sobre Redes Neurais Artificiais, novos
7.1 Avaliação da Eficiência dc uma
RN A ( Pós-Processamento )
Após o conjunto de treinamento (vetores
entrada / saida desejada ou só entrada ) e
o de testes (após o treinamento), três
fatores são analisados para a avaliação
da RN A:
conceitos fundamentais são introduzidos
para a implementação computacional.
a) Convergência;
b) Acurácia (*);
c) Flexibilidade(*);
/f 7 /G Cy / Redes IWeurais Artificiais
(*) quanto mais (complexa ) rápido for
o processo para sc atingir a acurácia,
menor a generalização ( flexibilidade)
ou, em outras palavras, maior a rigidez
( grande número de conexões ou pesos
a serem otimizados).
Obs. Um processo interativcçpode converejr
para um valor indesejado. A acurada está rela¬
cionada à convergência para um valor deseja¬
do dentro de uma análise estatística digital.
7.2 Controle da Eficiência de
RNAs ( Pré e Pós-Processamento
dos Dados )
No período de treinamento e de testes,
diversos fatores sào de capital importância
para o controle da eficiência de uma RN A:
a) Função básica (hiperplanos,
hiperes-feras, etc., );
b) Função de tranferência ou de ativa¬
ção ( porteira, rampa, sigmóide, tangen¬
te hiperbólica ou bipolares, aumento do
quadrado, “squash ing” ).
Obs. A sigmóide é um caso particular
da função “squash ing” ( a=(); b=l),
Na função “squash ing” os parâmetros a.b
e c e a variável independente v pertencem
ao conjunto dos reais. Particularmente, os
parâmetros b c c não podem ser nulos. Note
que o parâmetro c é o único que influencia
na inclinação de f (v). Este parâmetro tem
pouca influência na magnitude da função,
ao contrário dos outros dois a e b. Quando
sào usadas camadas intermediárias, pode-
se empregar sigmóide ou tangente
hiperbólica c funções lineares na saída.
c) Característica dos dados de entrada
e de saída desejada: pré-processamento
Dependendo de suas características, os da¬
dos de entrada c os de saída desejada, se
não sofrerem um pré- processamento, po¬
dem acarretar um completo iasucesso nos
objetivos do projeto de uma RN A. Por ou¬
tro lado, um mal tratamento nesses dados,
também pode influir de maneira desastro¬
sa na eficiência do sistema. Assim, um pré-
processamento adequado implica na ex¬
clusão de certos parâmetros intrísecos aos
dados de entrada não acarretando, por via
de consequência, significantes diferenças
nos resultados descjados.da RN A. Entre os
vários pré-processamentos, destacam-se:
c I) Conjunto de dados com elevadas
amplitudes
Observe que amplitudes elevadas
podem levar os neurônios não lineares
à saturação inibindo o treinamento. A
função sigmóide, por exemplo, para ele¬
vados valores de v, f(v) é sempre I e a
sua derivada, muito próxima de zero.
Neste caso, considere:
i) Filtragem do sinal com elevada am¬
plitude e freqüência nula. Este
processamento é adequado somente
••
quando o espectro for constituído
de sinais com baixas freqüéncias e
pequenas amplitudes ( exceto na fre¬
qüência nula onde a amplitude é ele¬
vada ). Neste caso a informação rele¬
vante deve ser as pequenas varia¬
ções que se encontram adicionadas a
um valor elevado correspondente à
freqüência nula;
ii) Grandes variações nas amplitudes
dos sinais. Neste caso, é aconselhável
que se divida cada elemento do vetor
de entrada pelo desvio padrão obtido
com o total de componentes;
iii) Emprega-se um linearizador (logaritmo
de cada componente ou eleva-se cada com¬
ponente a um expoente fracionário ou ele¬
va-se um número a cada elemento do vetor)
quando ocoiTcmm elevadíssimas variações
nas amplitudes dos dados. Neste caso a in¬
formação relevante deve ser a variação
percentual que é conservada após o
processamento;
c2) Conjunto de dados com pequenas
variações absolutas das amplitudes.
Neste caso emprega-se a derivada nu¬
mérica, para ampliar as pequenas vari¬
ações que deve ser a informação rele¬
vante para o treinamento e os testes.
d) Otimização da função erro para todas
as n saidas e para os p padrões
#
A função erro, para um valor fixo da
saída desejada d (i,m), depende da vari¬
ável saida real y (i,m) da rede. Por ou¬
tro lado y (i.m) depende da variável’v
(i.m) que por sua vez está relacionada á
entrada e ao peso w. Pode-se concluir
que o erro é uma função dos pesos w.
e (i,m) = f (w)
O valor da variável peso w pode ser
obtido pela função soma dos quadrados,
E = ÈZl d ( | 'M)-X«.M)| J
i«i i!-F
O valor ótimo de w pode ser calcu¬
lado, iterativamente, pelo método do
gradiente descendente que será comen¬
tado em outro artigo.
Dr. Carlos Thompson é Prof Titular do
Centro Universitário Augusto Moita.
Ph.D pela Universidade de Houston,
USA e Prof. da Universidade Federal
Fluminense no curso de Mestrado,
e-mail: cthotnpson @openlin k. com . hr
í
(
ê
I
I
ANUNCIE AQUI
4,5 X 18 cm
APENAS R$ 100,00
Informações pelo telefone(021)589-2088
disquete = ASMwin + Bitmap + ASM 86 + TILT online
^ A PRO KIT juntou todas as suas produções edito rias numa
única série: a TILT disquete. Agora ficou muito mais fácil
^ r—* r-*% 1 ^
Ur EH aprender os truques e segredos da programação for Windows
NOVIDADE
DA
PRO KIT
e da criação e arte no computador. Veja só o resultado:
ProgramaçãoDELPHI
líV*
■L-.
Dicas, programas, funções, procedures e muito mais. Tudo escrito de uma
forma simples e fácil de compreender. Aqui você aprenderá como criar anima¬
ção e jogos.
Artes & Efeitos
As mais quentes matérias da série Bitmap: efeitos especiais, criação artística,
dicas de animação e edição gráfica.
Já estão
disponíveis:
Assembler for Windows
wl\.
disco 0.
disco 1.
disco 2.
disco 3.
disco 4.
..R$ 5,70 [ ]
..R$ 5,70 [ ]
..R$ 5,70 [ ]
..R$5,701 ]
..R$ 5,70 [ ]
A TILT disquete é a única revista onde você pode realmente aprender os
segredos da programação Assembler, começando desde os conceitos
básicos do computador indo até programas completos.
Jogos & Aventuras
Nenhuma outra revista apresenta fontes de jogos, criados aqui mesmo no
Brasil. São jogos de todos os tipos, desde os mais simples jogos de reflexo
até os sofisticados Adventures.
OBS: Se você tem algum disco da série ASMwin, ao fazer um pedido,
disco 5...H$ 5,70 / J envie-nos o disquete que ele valerá uma TILT disquete inteiramente grátis.
Visite a TILT Online: http://www.orlatec.com.br/prokit/tilt.htm
OUTROS PRODUTOS DA PRO KIT
COMO FAZER O PEDIDO
[ jSistema EDITOR de Livro de Aventuras (win)... R$14,70
[ jAmazônia (dos/cdrom)... R$25,00
[ jAmazônia (win/disquetes 31/2... R$14,70
[ jCurso completo de Assembler (dos/disquete 31/2)...R$ 98,00
[ jGraphos 111+Topview (dos/disquete 3 1 /2)...R$ 35,00
PRO KIT Informática
Caixa Postal 76 - Orlândia / SP
cep 14620-000 fax(016)726 6820
# Envie cheque nominal à PRO KIT Informática, por carta. Proteja bem o cheque,
envolvendo-o em papel opaco. Nos pedidos acima de R$50,00use carta registrada
para maior segurança.
# Depósito bancário em contacorrente BRADESCO, agênda3176-3conta077270-
4, nominal a Renato Degiovani. Envie o comprovante do depósito por carta ou fax.
nome:_
endereço:_
cidade:_Uf:_
cep:_data:_
Cheque Número:_Valor R$_
Por: Marco Antônio de Araújo Paiva
Necessidade de Proteção da
Informação
Um dos maiores problemas enfren¬
tados por pessoas ligadas à área de
informática, é a violação de seus arqui¬
vos (programas ou dados) por intrusos.
Foi pensando numa solução que desen¬
volvi, crypt, um programa para
criptografar arquivos.
Funcionamento do Programa
O programa funciona da seguinte
maneira: no prompt do DOS, chama-se
crypt com a opção E ou D, para
criptografar ou remover a criptografia
de um arquivo seguido pelo nome do
mesmo.
Ao ser inicializado com a opção E,
o programa verificará se o arquivo já
está criptografado, finalizando-o em
seguida. Caso contrário, lhe será soli¬
citado uma senha, seguindo com a
criptografia.
Ao ser inicializado com a opção D,
o programa verificará se o arquivo não
está criptografado, finalizando-o em
seguida. Caso contrário, lhe será soli¬
citado a senha, seguindo ou finalizan¬
do-o se a senha estiver correta.
ê
Supondo que você tenha criado uma pasta (diretório) no disco do drive A com o
nome de PROV. Naquela pasta existe um arquivo hitmap com o nome dragon.bmp.
Para criptografar o arquivo dragon.bmp, use a linha de comando:
crypt -e a:\prov\dragon.bmp e
Descrição dos Módulos do Programa
Crypt foi desenvolvido em lingua¬
gem C, sendo composto de sete
módulos:
uma senha
Para recuperar dragon.bmp, use a linha
de comando:
crypt -da: \prov\dragon.bmp e a senha
correta
Para criptografar ou recuperar o arquivo
exemplo.doc:
crypt -e a:\exemplo.doc ou
crypt -d exemplo.doc.
Como o leitor pode observar, crvpt.exe
manipula bits e portanto criptografa
arquivos bmp ou doc.
/? TI G O X Programa em C p/ Criptografia de A rquivos
Main: emite mensagens informando
sua utilização, modo de uso e autor,
bem como a chamada aos procedi¬
mentos para o processamento do pro¬
grama.
Sair e Arq_Close: ambos fecham o ar¬
quivo manipulado e remove o temporário.
Le_Senha: faz a leitura da senha usada
no programa, sem ecoá-la na tela.
Abre_Arq_Enc e Abre_Arq_Dec:
abrem os arquivos necessários ao
processamento do programa e ambos
verificam se os parâmetros fornecidos
AlU
na linha de comando e o estado do ar¬
quivo permitem o prosseguimento do
programa.
Arq_Encode e Arq_Decode:
criptografam e removem a criptografia
do arquivo, sendo manipulação de bits
do mesmo.
Observações
1.0 programa foi desenvolvido em
Turbo C++, mas pode ser compilado em
qualquer compilador C ou C++ com a
devida correção em le_senha que usa a
função getch, ara ler um caracter do
teclado sem ecoá-lo na tela.
2. Pode-se converter facilmente crypt
para outra linguagem, tal como Delphi,
Visual Basic, dentre outras.
3. Crypt criptografa tanto arquivos bi¬
nários, como arquivos no formato
ASCII.
4. Com a publicação deste artigo a parte
do programa que criptografa e recupera
o arquivo deverá ser modificada para
evitar que um programa feito por tercei¬
ros recupere o arquivo criptografado.
Como sugestão deve-se alterar a mani¬
pulação de bits do arquivo.
Espero que com este artigo possa
ter contribuído para dificultar que
intrusos possam violar arquivos
confidenciais.
O Programa
A seguir está a listagem completa do
programa. Os comentários foram eli¬
minados para reduzir o tamanho da
listagem. Apesar disso, o entendimen¬
to do programa não será dificultado,
pois não usei expressões complexas,
nem vários comandos em linha.
<9
Eventuais contatos com Maivo Antô¬
nio de Araújo Paiva podem ser feitos
pelo endereço:
Rua General Clark, 960 -
Novo Progresso - Contagem/
MG - CEP 32115-140.
= Listagem =
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
typedef unsigned char byte;
int const maxbuf = 24576;
void sair(const char *arqd, FILE **orig, FILE
**dest);
void le_senha(byte **prim, byte **seg);
void abre_arq_enc(byte *prim, byte *seg, const
char *arqm, const char *arqd, FILE **orig,
FILE **dest);
void abre_arq_dec(byte *prim, byte *seg, const
char *arqm, const char *arqd, FILE **orig,
FILE ♦*dest);
void arq_encode(const char *arqd, FILE *orig,
FILE *dest, byte prim, byte seg);
void arq_decode(const char *arqd, FILE *orig,
FILE *dest, byte prim, byte seg);
void arq_close(const char *arqm, const char
♦arqd, FILE **orig, FILE **dest);
int main(int arge, char *argv(]){
FILE *orig=NULL, *dest=NULL;
byte prim, seg;
char *q, arqd[120]="\0", *p=arqd;
if(arge1=3){
printf("\n SINTAXE : Crypt (-E ou *D)
nome_do_arquivo \n*);
exit(0);
)
strcpy(arqd, argv[2]);
if ((Mq=strrchr(p,92))=92) 11 (* (q=strrchr(p,' :'))==':'))
p=++q;
*P='\0'?
strcat(arqd, *$$$$$.$$$*);
if((!stremp(argv[1], "-
e”)) || (!strcmp(argv[1], *-E*)))(
// le_senha(&prim, &seg);
abre_arq_enc(&prim, &seg, argv[2], arqd,
&orig, &dest);
arq_encode(arqd, orig, dest, prim, seg);
arq_close(argv[2], arqd, &orig, &dest);
return 0;
I
if((!stremp(argv [1], ••
d"))||(!stremp(argv[1], "-D*))){
// le_senha(&prim, &seg);
abre_arq_dec(&prim, &seg, argv(2], arqd,
&orig, &dest);
arq_decode(arqd, orig, dest/ prim, seg);
arq_close(argv(2], arqd, &orig, &dest);
return 0;
)
printf("\n SINTAXE : Cripty (-E ou -D)
nome_do_arquivo \n");
return 0;
)
void sair(const char *arqd, FILE **orig, FILE
**dest){
fclose(*orig);
fclose(*dest);
remove(arqd);
exit(0);
29
sARTI (7O / Programa em Cp/ Criptografia de Arquivos
}
void le_senha(byte **prim, byte **seg) {
char senha[120];
int i, len;
char ch;
**prim='/O•;
♦♦seg='/O•;
printf(" \n Password: ") ;
for (i=0; ; i++) {
ch = getchO;
if(ch==13)
{senha[i]='\0 ' ; break; }
putchar('#');
senha[i]=ch;
}
len=strlen(senha);
for(i=0;i<strlen(senha);i++){
♦*prlm=**prim + (senha [i] * (i+1));
**seg=**seg + (senha[i] * len);
len—;
}
printf( "\n ");
}
void abre_arq_enc(byte *prim, byte *seg, const
char *arqm, const char *arqd, FILE **orig,
FILE **dest){
byte sts[6]="CRYPT"; byte buffer[7];
if((♦orig=fopen(arqm # "rb"))== NULL){
printf( M \n Arquivo nao encontrado \n" ) ;
exit(0);
) .
le_senha(&prim, &seg);
if(fread(buffer, sizeof(byte), 5, *orig)!=5){
if(!feof(♦orig)){
printf("\n Erro de leitura \n ");
fclose(*orig);
exit(0) ;
}
}
if(!strncmp(buffer, sts, 5)){
printf("\n Arquivo ja bloqueado \n");
fclose(*orig);
exit(0) ;
}
if ( (* dest—fopjsn (arqd, M wb" ) ) ==NULL) {
printf("\n Impossivel abrir arquivo
provisorio \n w );
fclose(*orig);
exit(0);
)
if(fwrite(sts,sizeof(byte),5,*dest)!=5){
printf( M \n Erro de escrita ou disco cheio
\n*) ;
sair(arqd, orig, dest);
}
if(fwrite(prim,sizeof(byte),1> *dest) !=1) {
printf("\n Errode escrita ou disco cheio
\n”) ;
sair(arqd, orig, dest);
}
if(fwrite(seg,sizeof(byte),1,*dest)!=1){
printf("\n Erro de escrita ou disco cheio
\n") ;
sair(arqd, orig, dest);
}
if(fflush(*dest)==EOF){
printf("\n Erro de escrita ou disco cheio
\n") ;
sair(arqd, orig, dest);
}
}
void abre_arq_dec(byte *prim, byte *seg, const
char *arqm, const char *arqd, FILE **orig,
FILE ♦♦dest){
byte sts[6]="CRYPT", buffer[7], primi, segl;
• -
if((*orig=fopen(arqm, "rb"))== NULL){
printf("\n Arquivo nao encontrado \n");
exit(0);
}
le_senha(&prim, &seg);
if(fread(buffer, sizeof(byte), 5, *orig)!=5){
if (!feof(♦orig)){
printf("\n Erro de leitura \n");
fclose(*orig);
exit(0);
}
}
if(strncmp(buffer, sts, 5)){
printf ("\n Arquivo nao bloqueado \n")
fclose(*orig);
exit(0);
}
if(fread(Spriml,sizeof(byte),1,*orig)!=1){
if(!feof(*orig)){
printf("\n Erro de leitura \n");
fclose(*orig);
exit(0);
}
}
if(fread(Ssegl, sizeof(byte), 1, *orig)!=1){
if (!feof(*orig)){
printf("\n Erro de leitura \n~);
fclose(*orig);
exit(0);
}
)
if((*prim!=priml)||(*seg!=segl)){
printf("\n Senha incorreta \n");
fclose(*orig);
exit(0);
}
if((*dest=fopen(arqd, "wb"))==NULL){
printf("\n Impossivel abrir arquivo
provisorio \n");
fclose(♦orig);
exit(0);
}
)
void arq_encode(const char *arqd, FILE *orig,
FILE *dest, byte prim, byte seg){
byte jl=prim, j2=seg;
int ret;
byte *buffer;
if((buffer=(byte
*)malloc(maxbuf*sizeof(byte)))==NULL){
printf("\n Falta de memória \n*);
30
s4. jR TICf O X Programa em C p/ Criptografia de Arquivos
sair(arqd f &orig, &dest);
}
rewind(orig);
if((ret=fread(buffer, sizeof(byte), maxbuf,
orig))!=maxbuf){
if(!feof(orig)){
free(buffer);
printf("\n Erro de leitura \n")?
sairíarqd, &orig, &dest);
while(ret>0) {
for(int i=0;i<ret;i++) {
ji-;
j2++;
if ( (i%2) =ss 0) {
buffer(i]=~buffer[i];
buffer[i]=buffer[i] A jl;
}
else {
buffer(i)=~buffer(i);
buffer(i)=buffer[i] A j2;
)
)
if(fwri te (buffer,sizeof(byte),ret,dest)!=ret){
free(buffer);
printf(*\n Erro de escrita ou disco cheio
\n*) ;
sairíarqd, &orig, &dest);
)
if (fflush(dest)==EOF) {
free(buffer);
printf("\n Erro de escrita ou disco cheio
\n") t
sair(arqd, &orig, &dest);
)
if((ret=fread(buffer, sizeof(byte), maxbuf,
orig))!=maxbuf){
if(!feof(orig)){
free(buffer);
printf(*\n Erro de leitura \n*);
sair(arqd, &orig, &dest);
)
* )
)
)
void arq_decode(const char *arqd, FILE *orig,
FILE *dest, byte prim, byte seg){
byte jl=prim, j2=seg;
int ret;
‘byte *buffer;
if((buf fer=(byte
*)malloc(maxbuf*sizeof(byte)))==NULL){
printf(*\n Falta de memória \n m );
sairíarqd, &orig, &dest);
)
if((ret=fread(buffer, sizeof(byte), maxbuf,
orig))!=maxbuf)(
if(!feof(orig)){
free(buffer);
printf(*\n Erro de leitura \n");
sairíarqd, &orig, &dest);
)
)
while(ret>0) {
for(int i=0;i<ret;i++){
jl“?
j2++;
if((i%2)==0){
buffer[i]=buffer[i] A j1;
buffer[i]=~buffer[i];
}
else {
buffer[i]=buffer[i] A j2 ;
buffer[i]=~buffer[i];
)
)
if(fwri te (buffer,sizeof(byte),ret,dest)!=ret){
free(buffer);
printf(*\n Erro de escrita ou disco cheio
\n" ) ;
sairíarqd, &orig, &dest);
)
if (ff lush(dest)==EOF){
free(buffer);
printf("\n Erro de escrita ou disco cheio
\n") ;
sairíarqd, &orig, &dest);
)
if((ret=fread(buffer, sizeof(byte), maxbuf,
orig))!=maxbuf){
if(!feof(orig)){
free(buffer);
printf(*\n Erro de leitura \n");
sairíarqd, &orig, &dest);
)
}
)
)
void arq_close(const char *arqm, const char
*arqd, FILE **orig, FILE **dest){
fclose(*orig);
fclose(*dest ):
remove(arqm);
rename(arqd,arqm);
)
31
MELHOR DA
INFORMÁTICA
NACIONAL
Por tudo isso você não pode deixar de
ler Micro Sistemas. .Não perca mais
tempo! Garanta mensal mente o seu
aos acontecimentos e tendências, Micro exemplar fazendo uma assinatura anu-
Quem quer ficar "por dentro" da
informática nacional não pode deixar
de ler Micro Sistemas. Sempre atenta
Sistemas ê a única revista que mais
reflete o que acontece no mercado
brasileiro. Feita por brasileiros e para
brasileiros Micro Sistemas traz sempre
em suas páginas os assuntos mais
quentes do momento, programas em ■
diversas linguagens, rotinas, livros,
cartas de leitores, etc.
al de MICRO SISTEMAS por apenas:
" PROMOÇÃO "
/ ANO -R$ 50,00
2 ANOS - R$ 100,00
Para adquirir números anteriores
enviar R$ 5,00 para cada exemplar
desejado, R$ 1,00 para as despesas
postais, (disponível a partir do n-
153)
/Micro
Caixa Postal 18347
Rio de Janeiro - RJ
CEP 20722-970
Tcl. (021) 532-0770 ctul. 4016779
UF:
Nome:.
Endereço:.
Bairro:. Cidade:.
CEP: . Telefone: .
Assinatura:. Data././.
□ Estou enviando cheque cruzado nominal à PRB informática
Editora Ltda, referente à uma assinatura de MICRO SISTEMAS
G3anco:.Ag:.cheque n-\:.
TEL/FAX: (021) 261-7841 - (DAS 9,00 ÀS 17,00 HS)
Por: Daniel Omar Basconcello Filho
Para o leitor que nào sabe o que é a
propriedade Canvas, acredito que a forma
mais simples para entendê-la è traduzir a
E de conhecimento de todos que
essa nova linguagem de programação
chamada Delphi, veio para ficar. Tudo
devido a sua facilidade de aprendizado
e a rapidez com que uma aplicação é
desenvolvida nesta linguagem. Além
disso, a Borland disponibilizou inúme¬
ros recursos para a geração de um pro¬
grama, o que torna o sucesso do Delphi
maior ainda.
Este artigo visa desmistificar o
uso da impressora sob o ambiente
Windows. Com o Delphi, usar os
recursos de impressão fica muito
simples. Primeiramente vamos en¬
tender como funciona a impressão
sob o Windows, para após
implementarmos esses conheci¬
mentos utilizando o Delphi.
A impressão sob o Windows dife¬
re um pouco da impressão no DOS,
pois o programador a princípio nào
precisa saber qual a impressóra que
o usuário estará utilizando. O ambi¬
ente se encarrega dessa parte, através
do driver da impressora previamente
instalado. O programa diz ao ambiente
o que quer imprimir e o ambiente
imprime usando a configuração do
driver de impressão atual. Para o pro¬
gramador isto facilita MUITO o seu
trabalho, pois em DOS, além de criar
o programa, existe o inconveniente de
se ter que criar rotinas para imprimir
em vários tipos de impressora. Às
vezes a impressora que certo usuário
possui nào está inclusa no programa,
gerando problemas.
palavra canvas para o português.
Canvas significa “tela de pintor". Assim,
ê
tudo que enviarmos para Canvas será, no
Partindo do princípio que o progra¬
mador nào precisa saber o tipo de im¬
pressora do usuário, fica mais fácil cri¬
ar rotinas de impressão. No Delphi, fica
mais fácil ainda.
frigir dos ovos, desenhado e pintado
numa tela virtual de pintor. Virtual
porque ela só existe dentro de um
computador, ou seja, na memória do
computador e posterior e eventualmente,
irá se concretizar numa folha ou
transparência através de uma impressora.
O objetoTPrinter que está na Unit
Printers, é responsável pelo trabalho
de impressão do seu programa, e ao
0
envio do resultado para o Windows,
onde esse usa o driver de impressora
de forma adequada. Usa-se uma vari¬
ável do tipo TPrinter, já definida,
chamada Printer. Vamos ao exemplo
prático de como utilizá-la. Veja abai¬
xo a forma como é executada a im¬
pressão de um simples texto envolto
por um retângulo:
33
pra^ire<iyoml.BitStJi2Clik(Sender:TOject);
begin
Printer.BeginDoc; {Cria uma pá¬
gina virtual, que corçtèm o que
vamos imprimir)
Printer.Canvas.Rectangle(0,0,400,100);
{Usa os métodos da propriedade Canvas)
Printer.Canvas.TextOut(10,50,'Este
é um teste de impressão no Delphi');
Printer.EndDoc; {Passa a página
virtual para o Windows)
end;
Somente essas linhas já sào o su¬
ficiente para imprimir em Delphi. A
primeira linha começa o trabalho de
impressão, chamando o método
Prin-ter.BeginDoc. A partir daí, o
usuário “desenha" o que quer impri¬
mir em uma página virtual através dos
métodos da propriedade Canvas.
Isto é feito nas duas linhas seguin¬
tes do exemplo acima, desenhando
respectivamente um retângulo com
o míib Printer.Can-
vas.Rectangle e escrevendo uma
frase dentro dele com o método
Prin-ter.Canvas.TextOut, As coor¬
denadas passadas aos métodos
correspondem à posição do retângu¬
lo e do texto na nossa página virtual.
desenvolveremos abaixo, usaremos
apenas alguns deles. Fica a cargo do
programador mais curioso, consultar
sobre os outros. Uma boa sugestão
seria consultar o help do Delphi, que
pessoalmente, acho extremamente
útil. Eis o roteiro do nosso programa-
exemplo:
l#Crie um novo projeto, redi¬
mensionando Form I se desejar.
2# Adicione ao form o componente
Button.
3# Altere a sua propriedade Caption de
Button 1 para Imprime e dê um duplo
clique nele.
4# Adicione as linhas ao procedimen¬
to TForml.ButtonlClick conforme
listagem 1:
5# Na seção implementation, logo após
a diretiva de compilação, insira a unit
Printers na cláusula Uses (uses
Printers;), pois sem esta unidade o
programa não funciona.
6# Compile o seu programa e certifi¬
que-se de que sua impressora esteja li¬
gada. Se não estiver, o programa roda
perfeitamente, mas o driver de impres¬
são do Windows informa a situação.
Como vimos, qualquer trabalho de
impressão pode ser facilmente execu¬
tado por um programa feito em Delphi.
Usando os métodos do Canvas pode¬
mos alcançar resultados extremamen¬
te profissionais, basta o programador
usá-los com criatividade.
Daniel Ornar Basconcello Filho è es¬
tudante de segundo Grau Técnico de
Eletrônica; programador em Turbo
Pascal, Basic, Delphi e professor de
informática há 2 anos.
e-mail: phantor@mandic.com.br
Terminada a etapa de desenho, o
método Printer.EndDoc se encar¬
rega de mandar a página virtual para
o Windows, e este para o driver de
impressão.
Iremos agora desenvolver um tra¬
balho de exemplo, onde todos leito¬
res poderão aplicar o conhecimento
aqui exposto de forma prática. Exis¬
tem vários métodos do objeto Printer
e da propriedade Canvas para utiliza¬
ção na impressão. No programa que
Listagem 1
implementation
{$R *.DFM)
uses Printers? {5)
procedure
TForml.ButtonlClick(Sender: TObject)?
begin
Printer.BeginDoc; {Começa a construção da página}
Printer.Canvas.Rectangle(0,0,600,100); {Desenha uma caixa retangular}
Printer.Canvas.TextOut(10,10, 'Demo de Impressão'); {Escreve um texto}
Printer.Canvas.EllipsedO,220,300,300); {Desenha uma elipse}
Printer.EndDoc; {Termina a construção e envia o trabalho para o Windows}
end;
{4}
Perfil do Leitor da Revista Micro Sistemas
Sua opinião é extremamente importante para nós!
Softw are Cada caixa representa uma categoria de itens que você usa ou não em seu micro. Como estamos inician-
do a pesquisa, todos os itens têm o percentual 0,0% e encontram-se em ordem alfabética. Para indicar um ou mais itens que
você usa em uma categoria, basta riscá-los. Se um item nào estiver listado numa categoria , acrescente-o ao final da lista
com letra bem legivel. Se desejar, acrescente novas categorias e os respectivos itens.
Sistema Operacional
00,0% DOS-IBM
00,0% DR-DOS
00.0% MS-DOS
00.0% OS-Mac
00.0% OS2
00.0% Unix
Antivírus
00.0% VShield
00.0% Viruscan
00 . 0 %
Processador de Texto
00.0% Carta Certa (DOS)
00.0% Carta Certa (Win)
00.0% Fácil (DOS)
00.0% Fácil (Win)
00.0% Word (DOS)
00.0% Word (Win)
00.0% WordPerfect (DOS)
00.0% WordPerfect (Win)
00.0% Wordstar (DOS)
00,0% Wordstar (Win)
00,0% WordPad (Win)
00,0% Write(Win)
00 . 0 %
Ambiente Gráfico
00,0% Windows 3.1
00,0% Windows 3.11
00,0% Windows 95
00,0% Windows NT
Utilitários Independentes
00.0% Norton
00.0% PCTools
00.0% XTGold
00 . 0 %
Editor de Desenho/Foto
00,0% Corel Photo Paint
00,0% Paint Shop Pro
00,0% Paintbrush
00,0% Photo Shop
00 , 0 %
• r »••••• •
Cad / Editor 3D
00,0% 3D Studio
00,0% AutoCad (DOS)
00,0% AutoCad( Win)
00,0% MicroStation
00 , 0 %
Compactador
00,0% Aij( DOS)
00.0% Arj (Win)
00.0% Lha (DOS)
00.0% PKZip(DOS)
00.0% PKZIp(Win)
Planilha
00,0% Excel (Win)
00.0% Lotus 123 (DOS)
00.0% Lotus 123 (Win)
00,0% Quattro pro (DOS)
00.0% Quattro Pro (Win)
00 , 0 %
Desktop Publishing
00,0% Corel Draw
00,0% MS Publisher
00,0% Page Makcr
00,0% Ventura
00 . 0 %
Linguagem de Programação
00,0% Access (Win)
00.0% Asscmbler
00,0% Basic (DOS)
00,0% C.C++ (DOS/Win)
00,0% Clipper (DOS)
00,0% Cobol (DOS)
00,0% Cobol (Win)
00.0% dBase (DOS)
00.0% dBase (Win)
00.0% Delphi (Win)
00.0% FiveWin (Win)
00.0% Fox Pro (DOS)
00.0% Fox Pro (Win)
00.0% HTML (Win)
00.0% Java( DOS/Win)
00.0% Oracle (DOS)
00.0% Oracle (Win)
00,0% Paradox (DOS)
00.0% Paradox (Win)
00.0% Pascal (DOS)
00,0% Pascal (Win)
00.0% QBasic (DOS)
00.0% Visual Basic (Win)
Hardware
Tipo de Impressora
[ ] Jato de Tinta
[ ] Color
Tipo de Micro
[ J Laser
[ ] P&B
[ ] Mac
CPU(Mhz)
[ 1 Matricial
[ ] MSX
RAM (Mb)
[ ] PC-AT
HD(Mb/Gb)
Tipo de Scanner
[ ] PC-XT
Fax/Modem (bps)
[ ] De Mesa [ ) Color
[ ] Pentium
Multimídia (Vel.)
[ 1 Manual [ ] P&B
[ i
No-break (KVA)
dpi
[ i
Fita Strimmer(Gb)
Sobre MS e Você
01 - Como soube da MS?
( ] Banca [ ] Internet Indicação de[ ] Amigo [ ] de Professor
02 - Quando compra MS?
[ ] Sou assinante [ ] Todo mês [ ] Quando o assunto me interessa
03 - Gostou desse exemplar? [ ] Sim [ ] Nào
Internet/BBS
Navegador Web
00,0% Microsoft Internet Explorer
00.0% Mosaic
00,0% Netscape Navigator00,0%
Acesso | | Internet | | BBS
[ ] Baixar aplicativos
( ] Baixar fotos
[ ] Baixar fotos pomòs
[ ] Bater papo com amigos
[ ] Compras
[ ] E-mail
[ ] Fazer novas amizades
[ ] Fazer sexo virtual
[ ] Namoro virtual
[ ] Participar de workgroup
[ ] Pesquisa escolar
[ ] Pesquisa profissional
[ ]
04 - Se nào, o que mudaria nele?
05-0 que gostaria de ver nas próximas edições?
06 - Quais os artigos, colunas, seções, séries que mais gosta?
Envie sua resposta para um dos
endereços constantes
da página com o anúncio
“Procura-se Talentos"
Micropro¬
cessadores e
Placas de
cpü .
Por: Laércio Vasconcelos
Sesta serie, iniciada na Micro Sistemas #
164, Laércio Vasconcelos apresenta os
microprocessadores usados nos PCs atuais,
além de discutir aspectos técnicos sobre as
placas de CPU que os utilizam.
O texto extraído do livro "Upgrade Expert "
volume I.
I t.R
O velho barramento ISA mostrou-se
adequado para diversos tipos de placas
de expansão. Entretanto, já no início
dos anos 90, alguns dispositivos toma¬
ram-se mais velozes que o permitido
pelo barramento ISA: a placa de vídeo
e a placa controladora de disco rígido.
Para operar com altas resoluções e
elevado número de cores, as placas
SVGA modernas possuem uma grande
quantidade de memória de vídeo. Para
que os gráficos sejam apresentados na
tela em alta velocidade, era preciso que
o microprocessador pudesse transferir
dados para a placa de vídeo com taxas
de transferência mais elevadas. A taxa
máxima de 8 MB/s permitida pelo
barramento ISA já não era suficiente.
Os fabricantes de discos rígidos tor¬
naram-se capacitados a produzir mode¬
los de alto desempenho, capazes de
operar com taxas de transferência su¬
periores a 10 MB/s, o que não era per¬
mitido pelo barramento ISA, que se tor¬
nou uma barreira para o desenvolvimen¬
to de dispositivos mais velozes.
Para resolver este problema, a
VESA (Video Electronics Standards
Association) criou um novo
barramento veloz chamado VLB
(VESA Local Bus). Este barramento
foi muito utilizado nas placas de CPU
486, e mesmo nas de 386, fabricadas
em 1993 e 1994. Em 1995, começou
a cair em desuso, dando lugar ao
barramento PCI, usado nas placas de
CPU Pentium. Este é um ponto muito
importante. Se você possui um com¬
putador com uma placa de CPU 486
equipada com slots VLB e placas de
expansão VLB, caso deseje substituir
a placa de CPU por uma mais moder¬
na (que certamente não possuirá slots
VLB, e sim, PCI), terá que instalar
também uma placa SVGA padrão PCI.
Se você trabalha no ramo de upgrade de
micros, faz isto por hobby ou apenas deseja
aumentar seus conhecimentos, o livro
"Upgrade Expert " de Laércio Vasconcelos é
9
uma ferramenta necessária para você.
A placa de CPU 486 da figura 16
apresenta slots VLB. Em geral, essas •
placas de CPU possuíam dois ou três
slots VLB, nos quais podiam ser co¬
nectadas as seguintes placas:
Placa SVGA VLB
• Placa IDEPLUS VLB
36
Coluna do Laércio
A maioria dos micros 486
comercializados entre 1993 e 1995 sào
equipados com slots VLB e com pla¬
cas SVGA e IDEPLUS VLB. Uma pia-
*
ca SVGA VLB permite a transferência
de dados em alta velocidade entre o
microprocessador e a memória de
vídeo. Uma placa IDEPLUS VLB per¬
mite obter elevadas taxas de transferên¬
cia para o disco rígido IDE.
O barramento VLB opera com 32
bits, e utiliza o mesmo clock com o
qual o microprocessador comunica-se
com as memórias (clock externo). Por
exemplo, em uma placa de CPU
486DX2-66, na qual o clock externo é
de 33 MHz, os slots VLB podem trans¬
ferir até 132 MB/s, valor muito acima
dos 8 MB/s permitidos pelo
barramento ISA.
Os slots VLB sào compostos de três
conectores. Os dois primeiros sào in¬
teiramente compatíveis com os slots
ISA (por isso, podemos conectar pla¬
cas ISA de 8 e 16 bits nesses slots,
usando a seçào ISA), e um terceiro
conector no qual é feita a transferên¬
cia de dados em alta velocidade, e em
grupos de 32 bits. A maior parte das
transferências de dados é feita através
deste terceiro conector. A figura 28
mostra uma placa SVGA VLB e uma
placa IDEPLUS VLB.
Figura 28
Placas SVGA VLB e IDEPLUS VLB .
É correto afirmar que as placas
VLB sào obsoletas? Sim e nào. Essas
placas permitem elevadas taxas de
transferência, da mesma forma como
ocorre com as modernas placas de
/ Microprocessadores
# p
expansào PCI, usadas nos PCs basea¬
dos no Pentium. Os computadores
486, antigos campeões de velocidade,
ainda sào capazes de executar com efi¬
ciência a maioria dos softwares mo¬
dernos. Basta lembrar que o 486 de
120 MHz possui velocidade de
processamento praticamente igual ao
de um Pentium de 75 MHz. Um com¬
putador 486 de no mínimo 66 MHz
equipado com placas de expansào VLB
é razoavelmente veloz para executar a
maioria dos programas modernos, in¬
clusive o Windows 95 e quase todos
os seus aplicativos, além da quase to¬
talidade dos jogos modernos. Nos pró¬
ximos anos, os PCs 486 passarào a ser
cada vez menos adequados à execução
de programas modernos. Por exem¬
plo, muitos jogos já estão operando
em modos SVGA de alta resoluçào,
nos quais o 486 apresenta resultados
insuficientes, sendo o usuário obriga¬
do a optar pelo modo gráfico VGA,
com resoluçào de 320x200, com 256
cores.
Já os PCs 486 com clocks mais
baixos, como 25 e 33 MHz, podem
ser considerados obsoletos, sendo
lentos para a execução de muitos
softwares modernos. Observe que
esses computadores, desde que pos¬
suam memória suficiente, podem
executar os mesmos programas que
um Pentium super veloz, estando a
única diferença na velocidade de exe¬
cução. Por exemplo, um Pentium-
166 é cerca de 10 vezes mais veloz
que um 486DX-33. Quando o usuá¬
rio não tem condições financeiras
para fazer um upgrade no
microprocessador, uma forma de
contornar o problema é evitar o uso
de softwares modernos. Por exem¬
plo, se o usuário estiver satisfeito
com o Word 6.0, mesmo usado sob o
Windows 95, pode trabalhar bem com
um 486 de 25 MHz. Entretanto, se
quiser usar a nova versão do Word,
própria para o Windows 95, certa¬
mente sentirá o baixo desempenho do
486 de 25 MHz. Em outras palavras,
usuários que procuram sempre usar
as versões mais recentes dos diver¬
sos programas existentes no merca¬
do, devem procurar também usar com¬
putadores mais velozes.
Se você possui um computador
equipado com uma placa de CPU 486
com slots VLB, mas suas placas SVGA
e IDEPLUS sào modelos de 16 bits,
vale a pena adquirir modelos VLB, que
ainda podem ser encontrados à venda.
Placas SVGA VLB com 1MB de me¬
mória custam o equivalente a cerca de
50 dólares, e placas IDEPLUS VLB
custam cerca de 20 dólares, mesmo no
mercado brasileiro. Portanto, com cer¬
ca de 70 dólares, é possível melhorar
bastante o desempenho do computador,
através da maior velocidade da nova pla¬
ca de vídeo, e da maior taxa de transfe¬
rência do disco rígido. Entretanto, é
importante saber que essas placas de
expansào VLB nào poderão ser futura-
mente aproveitadas em um computador
Pentium, já que estes nào possuem slots
VLB. Se você pretende, a curto prazo,
instalar uma placa de CPU Pentium, nào
vale a pena investir em placas de ex¬
pansào VLB.
Pr/
Ao desenvolver o microprocessador
Pentium, a Intel criou também um novo
barramento, tào veloz quanto o VLB,
porém muito mais versátil. Trata-se do
barramento PCI (Peripheral
Component Interconnect), usado já nas
primeiras placas de CPU Pentium a
serem lançadas no mercado. Possui as
seguintes características:
• Opera com 32 ou 64 bits
• Apresenta taxas de transferência de até
132 MB/s, com 32 bits
• Possui suporte para o padrào PnP
(Plug and Play)
Apesar de poder operar com 32 ou
64 bits (os slots PCI de 64 bits sào um
pouco maiores que os de 32), pratica¬
mente todas as placas de CPU Pentium
atuais utilizam a versào de 32 bits. Uti¬
liza um clock igual à metade do clock
externo do microprocessador Pentium.
Isto significa que, dependendo do clock
do microprocessador Pentium utiliza¬
do, o barramento PCI pode operar com
Coluna do Laércio / IVt ia t~t?pro a as s ado ras
25, 30 ou 33 MHz. A tabela que segue
mostra a relaçào entre o clock do
barramcnto PCI e o clock interno do
microprocessador Pentium. Em todos
os casos, o clock do barramento PCI é
igual à metade do valor do clock exter¬
no do Pentium.
Clock interno Clock externoClock PCI
75 MHz
50 MHz
25 MHz
90 MHz
60 MHz
30 MHz
100 MHz
66 MHz
33 MHz
120 MHz
60 MHz
30 MHz
133 MHz
66 MHz
33 MHz
150 MHz
60 MHz
30 MHz
166 MHz
66 MHz
33 MHz
200 MHz
66 MHz
33 MHz
Observe que todas as versões do
Pentium, com exceçào do modelo de
75 MHz, existe muito pouca diferença
no clock do barramento PCI. Por
exemplo, um Pentium-200 é capaz de
transferir dados pelo barramento PCI
com a mesma velocidade do Pentium-
100, já que ambos utilizam um clock
PCI de 33 MHz. Como em cada ciclo
de clock sâo transferidos 4 bytes (32
bits), isto resulta em uma taxa de trans¬
ferência igual a cerca de 132 MB/s.
Com o barramento PCI operando a 30
MHz, temos 120 MB/s, e no
“lanteminha”, que é o Pentium-75, no
qual o clock PCI é de 25 MHz, temos
100 MB/s.
As placas de expansão PCI pos¬
suem um recurso muito interessan¬
te, além da sua elevada velocidade
de transferência de dados. Trata-se
da autoconfiguraçào obtida com o
padrão PnP (Plug and Play). Essas
placas são reconhecidas e configu¬
radas automaticamente pelo BIOS
(todas as placas de CPU equipadas
com slots PCI possuem um BIOS
PnP) e pelo sistema operacional (o
Windows 95 é um exemplo de sis¬
tema operacional PnP), sem neces¬
sitarem que o usuário precise
posicionar jumpers ou microchaves
para realizar manualmente a sua
configuração, como ocorria com as
placas de expansão até pouco tem¬
po atrás.
Obs.: Não só as placas de expansão PCI
são PnP. A maioria das placas de ex¬
pansão de 8 e 16 bits lançadas recente¬
mente também atendem ao padrão PnP.
A figura 29 mostra uma placa PCI.
Trata-se de uma placa Super VGA, a
placa de expansão PCI usada em pra¬
ticamente todos os computadores
baseados no Pentium, e nas versões
mais recentes das placas de CPU
486 e 586.
•r
I
Figura JV
i ma placa Sí 6 1 PCI.
Além da placa SVGA PCI, existem
outras menos comuns. Podemos citar
alguns exemplos:
• IDEPLUS PCI
• Placa de rede PCI
• Digitalizadoras de video PCI
• Controladoras SCSI PCI
MCA
O barramento MCA (Micro
Channel Architecture) já faz parte
da história da microinformática.
Foi criado em meados dos anos 80
pela IBM, para ser usado nos com¬
putadores IBM PS/2, os sucesso¬
res do IBM PC/AT. Tratava-se de
um barramento de 32 bits que ope¬
rava com um clock de 10 MHz, o
que o tornava 2,5 vezes mais veloz
que o velho barramento ISA. Ape¬
sar de ser veloz para os padrões de
sua época, possuía um sério pro¬
blema: era um barramento “secre¬
to”, pertencente à IBM. Isto signi¬
fica que apenas a IBM podia pro¬
duzir placas de expansão MCA,
bem como placas de CPU equipa¬
das com slots MCA. Além de ser
inútil para os demais fabricantes
além da IBM, não era nada interes¬
sante para o usuário. Como apenas
a IBM produzia placas de expansão
MCA, ou então empresas creden¬
38
ciadas pela IBM, essas placas
acabavam sendo muito raras e ca-
ras. O barramento ISA, apesar de
ser inferior, continuou sendo usa¬
do em larga escala por todos os fa¬
bricantes, exceto a IBM.
EISA
O barramento EISA (Extended
ISA) foi criado por diversas empre¬
sas líderes na fabricação de hardware
para PCs. Sua principal característi¬
ca era manter a compatibilidade com
as placas ISA, e ainda permitir a co¬
nexão de placas de expansão EISA.
Portanto, um slot EISA pode operar
com dois tipos de placas:
• Placas ISA de 8 ou 16 bits, operando
com 8 MHz
• Placas EISA de 32 bits, operando com
8 MHz
O funcionamento em 8 MHz foi
mantido para garantir a compatibi¬
lidade com barramento ISA. Pelo
fato de operar com 32 bits, o
barramento EISA era duas vezes
mais veloz que o ISA.
Ao contrário do MCA, o EISA
foi bastante utilizado, mas não ao
ponto de se tornar comum. Era um
barramento muito mais avançado
que apresentava, não apenas uma
velocidade maior, mas recursos
avançados como o reconhecimen¬
to automático de placas, uma es¬
pécie de Plug and Play dos anos
80. Sendo mais sofisticado, as pla¬
cas de CPU e de expansão, que o
utilizavam necessitavam de chips
especiais. A Intel era o principal
fabricante de chip sets EISA.
Como a maioria das placas de ex¬
pansão não necessitava de uma ve¬
locidade tão elevada,apenas algu¬
mas placas especiais o utilizavam.
Tipicamente, placas de CPU para
serem usadas em servidores de
arquivos, placas de rede e placas
controladoras SCSI de alto desem¬
penho utilizavam o barramento
EISA, pelo menos até o início dos
anos 90. Algumas poucas placas
Coluna do Laércio / Microprocessadores
SVGA para uso profissional em
CA D também chegaram a usar o
EISA. Por volta de 1994 já nào era
mais possível encontrar placas
EISA à venda, tendo sido substi¬
tuídas por outras mais avançadas,
primeiro com o barramento VLB,
e depois com o PCI.
lUt rra /// en los p roprietários
Cronologicamente, os barramentos
usados nos PCs foram:
• ISA de 8 bits
• ISA de 16 bits
•MCA
•EISA
• Barramentos proprietários
VLB
•PCI
Os quatro primeiros aparece¬
ram nos anos 80, e os dois últi¬
mos apareceram nos anos 90. En¬
tre esses dois grupos, surgiram os
barramentos proprietários. Eram
barramentos, em geral de 32 bits,
que certos fabricantes criavam
para a conexào de placas especi¬
ais. Normalmente operavam com
altas velocidades, acompanhando o
clock do microprocessador. Qua¬
se sempre, seu objetivo era a co¬
nexào de placas de expansão de
memória. Alguns chegavam mes¬
mo a utilizar placas de video es¬
peciais. O problema desses
barramentos era a falta de padro¬
nização. Ao adquirir uma placa de
CPU de um fabricante X, equipa¬
da com um slot proprietário, nào
poderíamos conectar neste slot,
uma placa de expansão de memó¬
ria um uma placa de video de um
fabricante Y. A falta de padroniza¬
ção era um grande empecilho para
a proliferação de placas de expan¬
são proprietárias. Einalmente, em
meados de 1993, surgiu o
barramento VLB, passando a per¬
mitir o uso de placas de expansão
de alta velocidade, industrialmen¬
te padronizadas.
Conclusão
Chegamos finalmente ao final
desta série de artigos. Você ccr-
tamente possui agora conheci¬
mentos detalhados sobre as placas
de CPU e os microprocessadores
usados nos PCs lançados nos últi¬
mos anos. Quanto aos PCs lança¬
dos ao longo de 1997, a grande
maioria deles seeue as caracteris-
ticas aqui apresentadas. Já os mo¬
delos mais avançados, recém-lan-
çados, certamente apresentam re¬
cursos novos não discutidos aqui.
Este é o caso dos PCs baseados no
Pentium MMX e nas novas versões
do Pentium Pro. Para quem quer
ficar sempre atualizado em rela¬
ção aos últimos lançamentos, o
aprendizado nào cessa nunca...
Laércio Vasconcelos é Engenheiro
Eletrônico e autor de vários livros.
JAVASCRIPT PARA NETSCAPE
%
Peter Kent e
John Kent
Makron Books
Crie Scripts em um
i nsta n te, i ri cr em en te
suas páginas Web
com multimídia e
interati-vidade,
mesmo que você
nunca tenha uma
Unha de código de
programa antes.
Aprenda todos os
Guia Oficial
•nu
* r»
JavaScript para
Netscape
0 Guia d?
Programado para
iCriiçío de Paginai
Web Imeratnuj
Et U M KtM
%
MVkKON
fundamentos de pro¬
gramação com este
guia passo a passo,
fácil de seguir.
Mais: Fontes de
JavaScript no site
da ventana on-line
para você
descarregar,
apresentando todos
os exemplos
JavaScript do livro,
em inglês, links para
sites Web úteis e
muito mais.
BBBr V.*;.,, ,
FiveWin e a
Migração de
Aplicações
Clipper para
o Windows
Parte 4 de 5
Por:Vilian F. Arraes
V*
Como o próprio leitor pode observar, Vilian F. Arraes expõe de forna
didática e objetiva os recursos que você poderá obter usando o
FiveWin. Em nenhum momento o autor ou a Miem Sistemas tiveram a
intenção de fornecer ao feitor um curso completo de Clipper, mas sim,
uma introdução ao FiveWin para que programadores em Clipfter
possam fazer a migração para o ambiente Windows de seus
aplicativos originalmente feitos para ambiente DOS.
O curso introdutório sobre o FiveWin iniciou na página 14 da
Micro Sistemas 163. A parte 2 do presente curso, que em
principio está dividido em 5 partes, foi publicada na edição
166. Veja na página com o anúncio “O Melhor da Informática
Nacional como adquirir números anteriores.
A extensa bibliografia disponível no
Brasil sobre o CLIPPER, contribuiu e
continua sendo um dos principais fato¬
res determinantes do seu sucesso. So¬
bre o FiveWin praticamente inexiste bi¬
bliografia local, entretanto o produto é
fornecido com um imenso conjunto de
programas exemplos (mais de 200 para
ser mais preciso), ilustrando os seus
mais diferentes recursos. Além dos có¬
digos fontes de todas as suas funções
e classes, cujo estudo permite abreviar
significativamente sua migração para o
ambiente Windows.
Neste curso procuramos manter a
utilização dos comandos do FiveWin o
mais simples possível, sendo apresen¬
tadas apenas as cláusulas indispensá¬
veis para execução da tarefa a que nos
propomos. Comandos como MENU,
DEFINE WINDOW, DEFINE DIALOG.
@ LISTBOX, etc, possuem grandes con¬
juntos de cláusulas e opções para se¬
rem utilizadas nas mais diversas situa¬
ções. Todas essas cláusulas e opções
são comentadas com detalhes nos ma¬
nuais que acompanham o produto, nos
formatos de HELP para o Windows e
arquivo para o NG.
O próximo passo na implementação
do nosso sistema exemplo, utilizado para
ilustrar a aplicação dos comandos do
FIVEWIN em conjunto com o
C LIPPER, consiste em implementar as
operações de manutenção propriamen¬
te ditas, ou seja, a inclusão, a exclusão,
a alteração e a impressão dos registros
do arquivo. Na edição anterior, criamos
uma janela de diálogo onde foi adicio¬
nado um botão para cada uma das ope¬
rações de manutenção, sem entretanto
definirmos que ação cada um destes
botões executaria. Obviamente este tre¬
cho do programa precisará ser modifi¬
cado de acordo com a tabela 1.
Observe que para todos os botões
correspondentes as operações de ma¬
nutenção, foi definida a cláusula
ACTION, sendo nela especificada uma
chamada a função SCCM ANUT. A cha¬
mada difere de um botão para outro ape¬
nas no primeiro parâmetro passado, que
como você já deve ter percebido
corresponde a uma letra identificadora
da opção escolhida( Exemplo: “1" para
inclusão, “A” para alteração,, etc), ou
40
C7C/RSO / FiveWitr
• •
9
•
1.0,29
BUTTON
"&Incluir*
SIZE
40,10
ACTION
SccManut("I",oDlg)
®
2.5,29
BUTTON
"&Alterar"
SIZE
40,10
ACTION
SccManut("A",oDlg)
4.0,29
BUTTON
"fitExcluir"
SIZE
40,10
ACTION
SccManut("E",oDlg)
! ®
5.5,29
BUTTON
"Im&primir"
SIZE
40,10
ACTION
SccManut("P",oLbx)
9
• •
7.0,29
•
BUTTON
"SFechar"
SIZE
40,10
ACTION
( oDlg:End() )
Tabela 1
seja, uma vez selecionado um botào, a função SCCM ANUT será acionada pelo siste¬
ma, recebendo como parâmetro a operação a ser executada. O segundo parâmetro é
utilizado para informarmos um objeto para manipulação/atualização. O código fonte
desta função é apresentado a seguir:
FUNCTION SccManut( forig, oObj )
LOCAL oDlgMan
PRIVATE sCodigo,sNome,nValor
IF forig = "E"// Processa exclusão de clientes
IF MsgYesNo( "Exclui "+Rtrim(cli->nome)+" ?","Confirmação")
DELETE
SKIP -1
oObj:Refresh ()
ENDIF
RETURN * “
ELSEIF forig = "P" // Imprime o conteúdo do arquivo
oObj:Report()
RETURN
ELSEIF forig = "I" // Incializa variáveis para inclusão
GO BOTTOM
sCodigo := StrZero(Vai (cl i->codigo)+1,4)
sNome := Space(40)
nLimite := 0
ELSE// Inicializa variáveis para alteração
sCodigo := cli*>codigo
sNome := cli->nome
nLimite := cli->limite
ENDIF
DEFINE DIALOG oDlgMan ; // Defini janela p/ interação com o cliente
FROM 10,10 TO 17,70;
TITLE Iif(forig="I","Inclusão","Alteracao")+" de clientes"
9 00,01 SAY "Cod:"
® 00,04 SAY "Nome do Cliente:"
@ 00,24 SAY "Limite:"
9 01,01 GET sCodigo PICT "9999" WHEN forig = "I" OF oDlgMan
@ 01,04 GET sNome PICT "@!" VALID .NOT. Empty(sNome) OF oDlgMan
@ 01,24 GET nLimite PICT "999,999.99" OF oDLgMan
® 03,20 BUTTON "&Ok" SIZE 40,10 OF oDlgMan ACTION ( GrvCLien te (forig), oDlgMan:End() )
® 03,27 BUTTON "&Cancela" SIZE 40,10 OF oDlgMan ACTION ( oDlgMan:End() )
ACTIVATE DIALOG oDlgMan // Ativa a janela de diálogo
RETURN NIL
FUNCTION GrvClientet forig )
IF forig = "I"
APPEND BLANK
REPLACE codigo WITH sCodigo
ENDIF
REPLACEnome WITH sNome , ;
limite WITH nLimite
RETURN nil
A exclusão de registros é a pri¬
meira operação implementada no
SCCM A-NUT, sendo utilizada a fun¬
ção MSGYESNO para exibir uma ja¬
nela de diálogo solicitando a confir¬
mação da exclusão. Esta função re¬
cebe dois parâmetros. O primeiro é a
mensagem a ser apresentada no cen¬
tro da janela (Ex: “Exclui “+Rtrim(cli-
>nome)+" ?”) e o segundo o seu ti¬
tulo. Na janela de diálogo criada por
esta função são adicionados auto¬
maticamente, os botões “SIM“ e
“NÀO’\ A seleção do botào “SIM"
leva a função a retornar um valor
TRUE (.T.) o que no nosso código
corresponde a confirmação da ope¬
ração de exclusão.
Os comandos DELETE e SKIP-1 são
nativos do próprio CLIPPER. A exclu¬
são do registro c finalizada pelo
acionamento do método REFRESH so¬
bre o objeto passado como parâmetro
para SCCMANUT.
Janela de confirmação da exclusão .
A impressão do conteúdo do ar¬
quivo c a operação mais simples de
ser executada, uma vez que a própria
classe LISTBOX disponibiliza um
método REPORT. Ao ser acionado
o botào imprimir o SCCMANUT
simplesmente aciona este método
para o LISTBOX definido no progra¬
ma SCC100. (Figura 2)
A implementação das operações de
inclusão e alteração de registros não
apresenta comandos e/ou funções no¬
vas, sendo em sua maior parte utiliza¬
dos apenas recursos oriundos do próprio
CLIPPER. Vale ressaltar apenas a for¬
ma como os dados são gravados, ou seja,
através da seleção do botào “OK", que
por sua vez aciona a função
GRVCLIENTE que efetivamente gra¬
va os dados no arquivo. (Figura 3)
41
CURSO / Uive Win
Previov da listagem do arquivo de d'entes.
Figura 2
Inclusão de clientes
Cod: Nome do Cliente:
Limite:
Cancela
Janela de diálogo exibida nas
operações de inclusão e alteração.
Figura 3
De forma alguma pretendemos com
este programa exemplo definir padrões
para a implementação de sistemas for
Windows, a manutenção de uma arquivo
pode ser executada de inúmeros modos
associando-se o F1 VEWIN ao CLIPPER.
Apresentamos apenas um desses modos
da forma mais simples possível. Inten-
cionalmente não implementamos a cri¬
tica para impedir a repetição dos códi¬
gos bem como o tratamento de valores
válidos para o limite de crédito, por acre¬
ditarmos que com base no apresentado,
nenhum programador CLIPPER encon¬
trará dificuldades para faze-lo.
Até a próxima.
VUian F. Arraes, Tecnólogo em
Processamento de Dados pela UFPa,
atua há dez anos na área de infor¬
mática, tendo desempenhado funções
de treinamento, análise e programação
de sistemas. Atualmente è sócio e ge¬
rente de desenvolvimento da
TECNOINF Sistemas Ltda.
e-mail: vilian@expert.com.br
BOCA ABERTA SE SOUBESSE
DE QUANTO
PREENCHER ESTE ESPAÇO COM OANÚNCIO
$
DE SUA EMPRESA
MICRO SISTEMAS
Animação
em ASCII
W W W W ™ w W W ™ w w • w W W W W W W W w W W w W W
com o
Clipper
Por: Carlos Emilio Padilla Severo
Após a digitação e compilação do código, rode o programa para
ver na tela um casal inicialmente sentado sob várias nuvem.
Aos poucos o namorado levanta, entrega uma flor à namorada e
carinhosamente a ajuda a se levantar. Dão um beijo. Ela não
f j
i cs is te e abraça fonemente seu amado. Os dois beijam-se entre
vários coraçòezinhos vermelhos que flutuam sobre o casal.
Enquanto a cena ocorre a lua vai surgindo por entre as nuvem.
Tudo isso ocorre em aproximadamente 10 segundos.
Prezado Carlos Padilla, queira me perdoar se me esqueci
de algo ou viajei muito alto. Por outro lado, cabe registrar
que este aplicativo que apresenta uma animação em ASCII
vem confirmar algo que sempre acreditei, ou seja,
programar é uma arte.
Estou enviando o programa
• ASCMOVE.PRG de minha au-
. toria, pois pretendo participar
| da seçào de programação des-
• ta revista. Já tive outro progra¬
ma publicado por esta revista,
• o que me deu grande satisfa-
. ção em ver meu trabalho reco¬
nhecido e recebi várias cartas
• de leitores e amigos.
O programa ASCMOVE.PRG
• demonstra a versatilidade da lin-
! guagem Clipper - geralmente
; conhecida por suas virtudes no
• desenvolvimento de aplicações
! comerciais - na criação de pe-
• quenas animações em ASCII.
! Estas animações podem ser
• desenvolvidas em qualquer lin-
• guagem até mesmos em arquivos
! de lote no MS-DOS. Basta um
• pouco de criatividade do progra-
. mador.
Espero que o programa agra-
. de, é bastante simples mas inte¬
ressante.
Os seguintes recursos serão
necessários para rodar o progra-
• ma:
Computador
• PC XT ou AT
' Memória
• 512 Kbytes
• Video
• CGA/EGA/VGA
Carlos Emilio Padilla Severo è
Bacharel em Informática pela
• Universidade da Região da Campanha
(URCAMP) - Bagè. Programa na
■ linguagem Clipper há mais de quatro
‘ anos profissionalmente. Atualmente é
■ professor universitário na URCAMP.
■ Para eventuais contatos com o autor.
. escrever para:
■ Av. Marechal Flori ano. 1601 - Centro
'. - Bagè - RS - CEP 96400-011
43
y4/? TIGO / Animação em slSCII com o Clipper
Programa
* Descricao
* Linguagem
* Autor
cor := SetColorí)
Mat_nom := {‘ \ ‘C
SetC ursor( 0)
CIs
SetPosí CK), (H))
SetColorí “BG+/N”)
0 " _ _
_
: ASCMOVE.PRG
: Faz uma animacaoem ASCII.
: Clipper 5.2
: Carlos Emilio Padilla Severo.
EWVPV.VSWV ‘
*A\ ‘b\ T\ *-\ ‘9\*6* |
*
*
*
Abr. %*
.
*> M .
O 44 ,
9
4
o
«1
M
SetColorí cor)
(íij 08,00 Clear To 23, 80
SetPos( 13,29)
SetColor( “W+/N”)
9 44
4
////A
AWW”
9 44
•
//// *\
/* wwr
9 44
•
////
j i_ wwr
9“
•
/A
@ WWW
9 44
4
/ / /
% / vwr
9 44
4
/
% / / wr
9 44
4
i \_
/ /\\//\r
9“
4
\
AL/ \ V’
9 44
4
/ \
\ // \ r
9“
•
/ A
/ / / \
SetColorí
“G+/N")
9“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAÁAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
lnkey( .3)
SetPos( 00,00)
SetColorí “W+/N”)
? “ V_—”
SetColorí “BCH-/N”)
• •
O »*_ _
0 *•__
<)m M
9 44 M
4
9
9
M
•4
SetColorí cor)
(a 08.00 Clear To 23, 80
SetPosí 13.20)
SetColor( “W+/N”)
9 44
4
////A
AWW*
9“
4
//// *\
/* wwr
9 44
4
nu
j i_ wwr
9 44
4
’ //\
@ \wwr
9 44
4
/ / /
% / vwr
9“
•
/
—% \\ / / wr
9“
4
1 \_
/ A\ / W”
9 44
#
\
a\/ \r
9“
4
/ \
\ // \ p
9 “
•
/ A
/ / / \
SetColorí
“G+/N”)
9 “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
«
Inkeyí .3)
SetPos( 00,00)
SetColorí "W+/N”)
? “ \ _”
SetColorí “BG+/N”)
44
• •
SetColorí “BG+/N”)
o ** **
SetColorí “W+/N”)
99 “ \ _*♦
* * * ^_
SetColorí ‘BG+/NT)
99 4* m
• •
9 “
4
9 44
9“
#
9
4
9
4
SetColorí cor)
(& 08,00 Clear To 23, 80
SetPosí 13,29)
SetColorí “W+/N”)
9'*
4
////A
AWW”
994
•
//// *\
/* wwr
9**
4
////
j i_ wwr
9**
#
/ A
@ \wwr
9**
4
/ / /
% / \ WC
9*’
4
/
1
vO
cj'
1
9’*
4
1
/ A \ W”
9**
•
\
AU \ V*
9**
•
/\
\ // \ r
944
•
/ A
/ / / \ r
SetColorí
“G+/N”)
9“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAÂAAAAA"
Inkeyí .3)
44
44
44
SetPosí 00,00)
SetColorí “W+/N”)
7 “ j _.**
SetColorí “BG+/N”)
99** _ _
4 4
9 **
SetColorí “W+/N”)
99 ** \ _V
4 4 I
SetColorí “BG+/N”)
99“ _
• •
9 4%_H
4
SetColorí “W+/N”)
99 ** \ _»»
4 4 *
SetColorí “BG+/N”)
99“ _
4 4
O "_
4
9“_
4
9
4
9
44
%4
44
44
44
SetColorí cor)
(Q 08,00 Clear To 23. 80
SetPosí 11,29)
SetColorí “W+/NT)
9*’
•
///A”
9**
•
//// *r
9*’
4
////_1
| AWW”
944
•
/ \
/* wwr
944
•
/ /
l _ wwr
9'*
•
/ w
@ \wwr
»
9*»
4
| A\
%
/ \W\”
9*’
4
\ \ -
%
_ / wr
9*’
4
/\ \ /
A \ W”
9’*
4
// \ \
/\ u \
r
9”
4
// \\_
_// \
r
9**
4
/_1 \
J / / \
T
SetColorí “G+/N”)
9“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Inkeyí 3)
SetPosí 00,00)
SetColorí “W+/N”)
? “ I -
44
SelColoit "BG+/N”)
99 **_ _ «
• • ———■ ■
«) M_*•
SetColort **W+/N~)
99 « I _“
SetColort “BG+/N")
*)*) ** _ M
• • ^ ^
<) M M
SetColor( “W+/NT)
99 •• \ _~
• • «
SetColor( “BG+/N")
99 44 _ ««
<) 44_M
SetColoit “W+/1ST)
99 44 \ _r
• • *
SetColoft “BG+/N’')
‘W “ _”
• *
*) 4 4 44
9
9
SetColort cor)
(a 08. (X) Clcar To 23.80
SetPost 11 , 29 )
SetColort “W+/N")
944
•
///A"
944
•
//// *Y
r4
9**
•
////
j A\\\r
944
•
/ \
/* wwr
•r*
•
/ /
l__ wwr
•r*
•
/ \\
faj \\\\\r
•r*
•
1 /\\_
% /
\wr
944
•
\ V—
%
- / \\r
944
•
/\ \
/ a \ \r
*r
•
// \ \
a \_\ \ r
1
•r
*
// w
\ \ r
9~
•
/—I V
1 / v
r
SetColort **G+ W)
9 **AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
Inkeyt .3)
SetPost (X). 00)
SetColort “W+/N~)
*> ** / _r
SetColort “BG+/N”)
99 *• _
• •
•) 44_M
SetColort “W+/N”)
99 -| _ M
SctColoit -BG+/N”)
99 *_
• •
•> 44_M
SetColort “W+/NT)
■>*»*• I _ r
SetColort “BG+ZN”)
99 “ _
• •
O 44_44
SetColort “W+/IST)
•>9 •• v _r
• • »
SetColort “BG+/N”)
90*»_ r
• •
<) 44 44
SetColort M W+/N M )
99 ** \ _y»
• • »
9
4
9
44
SetColort cor)
(a 08. (X) Clcar To 23. 80
SetPost 11.29 )
SetColort “W+/1ST)
r ///A”
r //// *r
9“
•
//// _ |
1 A\\r
944
•
/ \
/• \\r
9“
•
/ /
1 _\\\r
9”
•
/ \\
//\\r
9“
•
1 M\_
% // |W\"
9“
•
\ \
% 1 \\\r
9”
4
A \ /
__\ iw
9“
•
n\\
/_r
9“
•
// \v_
_// \\_/\^
9 ».
•
/_ 1 \_
j |_ ( \ a r
SetColort
“G+/N”)
•
? “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA”
Inkeyt 3)
SetPost 00,00)
SetColort “W+/NT)
? “ /-.**
SetColort “BG+/N”)
•>9 “ _
• •
9 44 _ 44
SetColort "W+/N")
*»«/ _’•
• • •
SetColort “BG+/N”)
99“ _
9
44
SetColort “W+/N”)
99“ | _“
SetColort “BG+/N”)
•>9“ _
4 •
9 44_44
SetColort “ W+/N”)
99 “ I _“
SetColort “BG+ZNT)
99 “ _"
4 •
9 44
SetColort “W+/N”)
*>*>»* \ _r
?“ \_—”
9
• •
44
SetColort cor)
(a 08.00 Clcar To 23. 80
SctPos( 11,29)
SetColort “W+/N”)
9“
•
///A
A\\r
9”
•
nu n
/* \\\r
9“
•
////_ 1
1 _\\\r
9”
#
/ \
\ wr
nr
•
/ /
/ \\\r
nr
•
/ \\ t*
§ \ /wr
nr
•
1 M\_
% //
944
•
\ \
% 1
r»
•
/\ \ /
/ / \r
9“
•
u\\
/ /r
9“
•
II \\_
__// \r
9 *.
•
l—l \_J
i—/1_
SetColort
“G+/N”)
44
9--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
Inkeyt 3)
SetPost 00,00)
SetColort “W+/N”)
9 44 44
•
SetColort ‘‘BG+/NT)
99“ _
• •
9 4 4 4 4
s
SetColort “W+/N”)
99 « / _V
• 4 #
SetColort “BG+/N”)
99 “ _
• •
9 44 44
SetColort “W+/NT)
99“ / _r
4 • í
45
X Animação em
com o
Sc(Color( "BG+/N")
•>9 **
• •
O *•_
M
SetColoU "W+/NT)
•» - j > h
♦ •
SctColort “BG+/N")
■M« _*'
• •
O «4 M
SctColor( “W+/N”)
99 •• I _~
?" \ -. w
? - V_—'
SctColor( cor)
to 08.00 Clear To 23. 80
SctPoM 08.29)
SetColoH “W+/IST)
9**
•
///A
A\\r
9**
•
//// n
/* ww
nr
•
//// _ |
|_ww
nr
•
/ \
/ wr
9”
•
i /1
<&/ pr
9*'
•
ii \
% y/pv
nr
•
i\ _
% /
r
•
11 /
I w
•
i i
i r
nr
•
\ i
i / 4%
nr
4
i/
\r
«r
•
i/
\r
•
ii
ir
•V
4
ii_
_ir
4
\_j
i _ r
44
SetColoU “G+/NT)
9 ••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA**
lnkcy( .3)
SctColoil cor)
to; 08.00 Clear To 23. 80
SctPos< 08.29)
SctColort
"W+W )
•r %
4
///A
A\\r
*r*
•
nu n /* ww
*r
4
////_
ji _ww
nr
4
/ \
t wr
n"
4
i/1
@/ fr
9»,
4
II \
% V/f
T
4
i\_
%
nr
4
11 /
1 \r
4
11
i r
*r*
4
\ i
1 r
«r*
4
i/
\r
•r*
4
i/
\r *
nr*
4
M
ir
*r*
•
ii_
—nr
nr
4
\_|
44
SetColoit “G+/N")
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
SetColorl “R+/NT)
to 07.36 say chr( 03 )
lnkey< .3)
@ 07,36 say ‘ *
to 06.40 say chr( 03 )
lnkcy( 3)
to 06.42 say chrt 03 )
lnkcy( .3 )
(l w. 06.40 say * 4
lnkcy( .3)
to: 06.42 say 4 4
(« 06.38 say chr( 03 )
lnkcy( .3)
to 06. 36 say chr( 03 )
lnkcy( 3 )
(gj 06.38 say 4 4
lnkey( 3)
(ai 06.36 say 4 4
lnkey( .3)
SetColoft cor)
(a 08.00 Clear To 23, 80
SetPos( 08.29)
SctColoit 44 W+/N”)
•r*
4
///A
Awr
9 ”
4
UH *\
/• ww
•)”
4
//// _ |
u vw
9 ”
4
/ \
/wr
9 -
r 9
i /1
@/ iw"
9 »,
4
ii \
% v/pr
r
i\_
% /f
9 ».
•
i i /
1 \r
r
i i
i r
•
\ i
i /“
r
i/
\r
9 ”
•
i/
\r
9 ”
4
ii
ir
9 **
4
ii_
ir
9 '*
4
\_J
i _ r
9”
SetColoit “G+/N")
9“AAAAAAAAAAAAAA/WVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-
lnkey( .3)
SetColoit cor)
(@ 08.00 Clear To 23, 80
SelPos( 08,29)
SctColort “W+/N”)
T ///AA\\r
r //// *\ \\\\"
r //// i \\\r
/ \ / wr
1/ |/ |\r
II \__v /|\r
r |\_/pr
9«
9»
9’*
4
9'*
4
9”
9”
9**
9”
SetColoit “G+/N”)
9 “AAAAAA/NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA**
SetColort “R+/N”)
@ 07.36 say chr( 03 )
lnkey( .1 )
@ 06.38 say chr( 03 )
lnkcy(. I )
(w t 06.40 say chrt 03 )
lnkey( .1)
@ 06,34 say chr( 03 )
lnkey(. I)
@ 06,32 say chr( 03 )
!nkey( .1 ) ’
(gj 05,34 say chr( 03 )
lnkey( .1 )
@ 05,38 say chr( 03 )
SctColort 44 W+/N")
SctPos< 23.55)
for x :** I lo len( Mat_nom )
@ 23, col() say Mat_nom[x]
lnkcy(. I )
next
SetPos( 24,00)
SetColort cor)
SctCursor( 1)
46
# .* *+-*« »
» .$ * > # *
- 4’, - X éfé$ k +
*. *■' *•?••£: ♦ i *■
H*tTST
* f i I
f*r» ••»*
•«f
*, * f
fr* *• • •a-.* •
E isso ai
. .
matemáticos, educacionais, utilitários para internet, jogos. etc. Adquira
uma cópia deste nosso fantástico acervo de programas, gravados em I 5
transferencia aos programas aos c t )s para uisquctc (ou para seu
Winchester), um programa loca! i/ador que acha com facilidade o
programa que você precisa cm um banco dc dados com a listagem
completa dos programas incluindo nome. descricào. data. tamanho em
bytes, categoria c çqdigo.
SIM, todos os 50.000 programas serào seus, para você usar, copiar,
vendei ou alugar a qualquer hora?
E quanto custa este pacote com mais dc 50.000 programas c todos os
outros itens descritos acima? Apenas RS 1.500.00 que lambem podem
ser pagos cm 3 parcelas dc R$600,00 ou seis parcela* dc RS3’50.00.Todo
o material tem garantia de 5 anos e vem acompanhado dc nota fiscal
para sua segurança e tranquilidade.
NEM ES IS IN FOR M AT IC A LT D A.
Rua Sete dc Setembro. 92 sala 1203-ccnlm-Rio dc Janeim-RJ-Brasil
TEUiPONEl (021) 242-034X-tax (021 >242-4760
INTERNET:nttp://\yww.ibase.org./^nemesistur
—-
AG fUR Photografische Industrie
QUALIDADE A TODA PROVA
TYPON, é uma empresa suíça que fabrica filmes para a lndus f na de artes gráficas
com reputação internacional há mais de 50 anos, além de toda a qualidade e
produtividade efetivamente comprovada por consumidores europeus, os filmes
para Scanner e imagesetter TYPON foram, ainda, mais aperfeiçoados em suas
propriedades mecânicas. Hoje. os clientes TYPON passaram a beneficiar-se'
com:
• Melhorada e mais prolongada proteção eletrostática
• Melhor e mais fácil manuseio nos equipamentos de Imagesetter
• Significativo aumento de resistência a pressões e danos ao filme
FILMES TYPOSCAN E TYPOTYPE
Dimensão e aplicações
A TYPON detém a mais moderna tecnologia “Day Light Load".
Esta tecnologia de ponta permite um carregamento seguro dos
filmes em ambiente normal de luz do dia, dispensando totalmente
o uso de câmara escura.
ISO QUALITY CERTIFICATE
Recebido em março de 1994.
Qualidade é prioridade para a TYPON O Certificado de Qualidade
ISO 9001 faz com que nossos clientes não precisem apenas
acreditar na palavra da TYPON.
Para adquirir os produtos TYPON no Brasil e obter maiores
informações, contate:
St C
IW te»
n*/w*. •
mi
• •
L
DISTRIB UIDOR EXCLUSIVO
rm
da
COMERCIAL IMPORTADORA SEPIA LTDA.
Rua Alves Montes, n° 21, São Cristóvão Rio de Janeiro - CEP 20920-430
Tel.: (021) 589-5581 - FAX: (021) 589-3356
I